Como criar Dashboards com o Python?

Dashboards são extremamente úteis para criar Web Apps que permitem monitorar diversos indicadores, em tempo real e de forma automatizada. Esses painéis podem ser construídos de diversas formas e vamos mostrar no post de hoje uma introdução de como criar esse ambiente utilizando o Python em conjunto com a biblioteca Dash.

O que é um Dashboard

Um Dashboard é um painel que oferece uma interface gráfica com visualizações rápida e interativas dos principais indicadores de uma empresa, seja da parte financeira, contábil, desempenho e até mesmo de diversas outras área não relatadas a empresarial, como por exemplo, os Dashboards de monitoramento da conjuntura econômica da Análise Macro.

Existem diversas ferramentas e softwares que permitem construir um Dashboard. Aqui mostraremos como utilizar o Python para criar esses painéis.

Entre as diversas possibilidades de criação com o Python, mostraremos por meio da biblioteca Dash.

Dashboard com o Dash

A biblioteca Dash é construída em torno do Plotly.js e do React.js e permite construir e realizar o deploy de painéis interativo customizados de acordo com o usuário.

O primeiro passo para construir um Dashboard com a biblioteca é instalando ela por meio do comando:


pip install dash

O segundo passo é criar o layout. O layout basicamente descreve como o Dashboard se parece, delineando os elementos visuais (texto, cor, posição dos gráficos, tamanhos, etc) e o local onde cada elemento que contém os dados (gráficos e tabelas) se inserem no Dashboard.

Vamos construir um layout para produzir um Dashboard que possui como elemento visual um gráfico que representa relação entre o PIB per Capita dos Continentes e países com a expectativa de vida ao longo dos anos.

No IDE de escolha do usuário (aqui foi utilizado o VS Code), construa um arquivo .py chamado app. Em seguida, começamos a criação do layout dentro deste arquivo, iniciando com a importação das bibliotecas necessárias.


from dash import Dash, dcc, html, Input, Output
import plotly.express as px
import pandas as pd

Através da biblioteca Dash, são importados os módulos Dash, dcc, html, input e output, que respectivamente são utilizados para criar o servidor local; o elementos core, respectivos aos componentes de inserção (no caso do código acima, um Slider que iremos utilizar para criar a interatividade com os anos do gráficos); os elementos html do Dashboard produzido; e por fim, os elementos de input e output do Dashboard (inserção e saída dos dados). Com a biblioteca Plotly cria-se os gráficos interativos produzidos no Dashboard, e por meio do pandas, é importado os dados de formato .CSV e realizado o seu tratamento para criar o Slider e o gráfico com o Plotly.


df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/gapminderDataFiveYear.csv')

Antes de construir o layout devemos construir o objeto app com o módulo Dash, que basicamente realiza a constituição do servidor local do Flask, ou seja, vai permitindo que o Dashboard "rode". É obrigatório a construção desse objeto, pois por meio de seus métodos construiremos o layout.

app = Dash(__name__)

Para construir o layout definitivamente dentro do app, devemos declara-lo dentro do objeto app, inserindo os elementos que desejamos adicionar. Realizamos esse procedimentos por meio da construção da página HTML com o módulo html e seu método .Div (que basicamente é um wraper do ). Dentro do Div, inserimos o texto da página (com método html.H1 e html.H2); o gráfico (com o método dcc.Graph) e o Slider, por meio do dcc.Slider. Veja que aqui construímos os dados do Slider por meio dos dados importados utilizando o pandas, enquanto o gráfico não foi criado ainda.


app.layout = html.Div([
    dcc.Graph(id='graph-with-slider'),
    dcc.Slider(
        df['year'].min(),
        df['year'].max(),
        step=None,
        value=df['year'].min(),
        marks={str(year): str(year) for year in df['year'].unique()},
        id='year-slider'
    )
])

O segundo passo é construir o callback do Dashboard de forma que seja disponibilizado os inputs, isto é, uma interatividade no front-end causando uma alteração dos dados no back-end, e que seja retornado visualmente essa mudança. Essa mudança que queremos está na alteração do ano escolhido por meio do Slider, causando uma mudança dos dados do gráfico.



@app.callback(
    Output('graph-with-slider', 'figure'),
    Input('year-slider', 'value'))
def update_figure(selected_year):
    filtered_df = df[df.year == selected_year]
    fig = px.scatter(filtered_df, x="gdpPercap", y="lifeExp",
                     size="pop", color="continent", hover_name="country",
                     log_x=True, size_max=55)
    fig.update_layout(transition_duration=500)
    return fig


Veja que no começo é definido o que estará no Output, no caso, o gráfico e no input, o Slider criado anteriormente. É dentro do callback que será construidos o gráfico definitivamente utilizando o Plotly.
Ao final, ao rodar os códigos acima, deve-se obter uma página HTML da seguinte forma:

______________________________________

Quer saber mais?

Veja nossa trilha de cursos Ciência de Dados para Economia e Finanças.

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Comente o que achou desse artigo

Outros artigos relacionados

Análise regional do mercado de trabalho com dados do CAGED usando Python

Os microdados dos CAGED fornecem informações detalhadas a nível de cidade, sexo, raça, nível de instrução, idade, salário e outras sobre os trabalhadores formais do Brasil, possibilitando ricas análises regionais de dados. Neste artigo mostramos como acessar, processar e analisar estes dados utilizando o Python.

Transfer Learning: mostrando porque o Python está na ponta do desenvolvimento

A aprendizagem por transferência (transfer learning) é o reuso de um modelo pré-treinado em um novo problema. Portanto, sua utilização torna-se um avanço enorme para a previsão de diferentes tipos de variáveis, principalmente para aquelas ordenadas no tempo. Mostramos nesta postagem o uso do Transfer Learning com o Python para o caso de Séries Temporais.

como podemos ajudar?

Preencha os seus dados abaixo e fale conosco no WhatsApp

Boletim AM

Preencha o formulário abaixo para receber nossos boletins semanais diretamente em seu e-mail.