Рубрики
Без рубрики

Python Dash: Как построить красивую панель инструментов в 3 шага

Визуализация данных является важным инструктором для ученого данных. Строительство красивых приборных панелей – это важный навык для приобретения, если вы планируете показать свое представление о руководителях уровня C-уровня. В этом посте в блоге вы получите введение в рамки визуализации в Python. Вы узнаете, как построить приборную панель из приема … Python Dash: Как построить красивую панель инструментов в 3 шага Подробнее »

Автор оригинала: Neeraj Sujan.

Визуализация данных является важным инструментом для A Данные ученые Отказ Строительство красивых приборных панелей – это важный навык для приобретения, если вы планируете показать свое представление о руководителях уровня C-уровня. В этом сообщении вы получите введение в рамки визуализации в Python Отказ Вы узнаете, как создать приборную панель от получения данных для создания интерактивных виджетов, использующих Dash – Рамки визуализации в Python.

Введение в черту

Фрамка Dash может быть разделена на два компонента

  1. Макеты : Макет – это элемент пользовательского интерфейса вашей приборной панели. Вы можете использовать такие компоненты, как кнопки, таблица, радиопередачи и определите их в своем макете.
  2. Обратные вызовы : Callbacks предоставляет функциональные возможности добавлять реактивность на вашу приборную панель. Работает с использованием функции декоратора для определения входных и выходных объектов.

В следующем разделе вы узнаете, как построить простую приборную панель для визуализации производительности марафона с 1991 по 2018 год.

Импорт библиотеки

Давайте сначала импортировать Все библиотеки импорта

import dash
import dash_core_components as dcc
import dash_html_components as html
import dash_split_pane
import plotly.express as px
import pandas as pd
from datetime import datetime

Мы импортируем библиотеку Pandas для загрузки данных и библиотеки Dash для создания приборной панели.

Библиотека сюжета Express построена на вершине Potty, чтобы обеспечить некоторые простой в использовании функциональные возможности для визуализации данных.

Сначала мы начнем с загрузки данных. Данные могут быть доступны к Kaggle, используя следующие ссылка на сайт

Шаг 1: Инициализация приложения Dash

Начнем с помощью приложения Dash и используя команду Run_Server запустить сервер.

external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']
 
app = dash.Dash(__name__, external_stylesheets=external_stylesheets)
 
 
if __name__ == '__main__':
   app.run_server(debug=True)

Шаг 2: Создание макета

Мы начнем с разделить наш уровень пользовательского интерфейса на две части – левая панель покажет окно настроек, которое будет включать опцию для выбора года. Правая панель будет включать в себя графическое окно, отображающее гистограмму.

app.layout = html.Div(children=[
   html.H1(children='World Marathon Analysis',
    style={'textAlign': 'center'}),
  
   dash_split_pane.DashSplitPane(
   children=[
  
   html.Div(children=[
        html.H1(children='Settings', style={'textAlign': 'center'}),
           ], style={'margin-left': '50%', 'verticalAlign': 'middle'}),
   html.Div(children=[
        html.H1(children='Graph View', style={'textAlign': 'center'}),
            ])
   ],
   id="splitter",
   split="vertical",
   size=1000,
)
  
])

Мы строим два Div Элементы – один для левой панели и другой для правой панели. Чтобы выровнять элементы заголовка в центр, мы используем Стиль Тег и использование стандартного синтаксиса CSS для определения элементов HTML.

Если вы сейчас начнете сервер и перейдите в свой браузер на localhost: 8050. , вы увидите следующее окно.

Шаг 3: Создание выпадающего виджета и графического окна

После того, как у нас будет базовая настройка макета, мы можем продолжить оставшиеся детали.

Загрузка данных

Мы начинаем с загрузки данных с использованием библиотеки Pandas

def convert_to_time(time_in_some_format):
   time_obj =  datetime.strptime(time_in_some_format, '%H:%M:%S').time()
   return time_obj
 
def get_data():
  df = pd.read_csv('world_marathon_majors.csv', engine="python")
  df['time'] = df['time'].apply(convert_to_time)
  return df

Мы создаем две функции для загрузки данных и преобразовывать значение времени на datetime Значения объектов.

В таблице ниже приведены первые пять рядов набора данных.

Каждая строка состоит из

  1. Год марафон состоялся
  2. Победитель марафона в этом году
  3. Пол победителя
  4. Страна победитель представляет
  5. Время закончить гонку
  6. Страна, в которой имел место марафон.

Расширение макета

Следующим шагом является расширение нашего слоя макета, добавив раскрывающийся виджет и графическое окно.

app.layout = html.Div(children=[
   html.H1(children='World Marathon Analysis',
    style={'textAlign': 'center'}),
  
   dash_split_pane.DashSplitPane(
   children=[
  
   html.Div(children=[
        html.H1(children='Settings', style={'textAlign': 'center'}),
        dcc.Dropdown(id='dropdown-menu', options=[{'label':x, 'value': x} for x in range(df['year'].min(), df['year'].max()+1)],
         value=df['year'].max(),
         style={'width': '220px','font-size': '90%','height': '40px',}
        )
    ], style={'margin-left': '50%', 'verticalAlign': 'middle'}),
   html.Div(children=[
        html.H1(children='Graph View', style={'textAlign': 'center'}),
        dcc.Graph( id='input-graph',figure=get_default_data())
    ]) 
   ],
   id="splitter",
   split="vertical",
   size=1000,
)
])

Мы даем раскрывающийся виджет уникальный идентификатор под названием DropDown-Menu И графическое окно дано ID Вход-график.

Обратные вызовы

Обратные вызовы используются для включения связи между двумя виджетами.

Мы определяем функцию под названием update_output_div, которая требует значение года, когда выпадающий мент изменен. На каждом изменении раскрывающегося значения функция update_output_div выполняется и бар Сюжет Рисуется, чтобы указать лучшие страны, которые выиграли гонку.

@app.callback(
   dash.dependencies.Output('input-graph', 'figure'),
   [dash.dependencies.Input('dropdown-menu', 'value')]
)
def update_output_div(value):
   test_sample = df[df['year'] == value]
   test_sample = test_sample.groupby('country')['time'].min().reset_index()
   tt = test_sample.sort_values(by=['time'])
   fig = px.bar(tt, y='country', x='time', orientation='h', hover_data=["time"], )
   return fig

Живая демонстрация

Давайте теперь увидим приборную панель в действии.

В этом блоге вы узнали, как построить простую приборную панель в Python. Вы можете расширить приборную панель, чтобы включить больше виджетов и отображать больше графиков для дальнейшего анализа.