Business Intelligence Data Science Python

Storytelling com Dash e Plotly

Fala galera! Primeiramente espero que estejam todos muito bem. Hoje quero trazer para vocês um tema muito interessante, e que faz toda a diferença na hora de apresentar o resultado de uma análise de dados. Estou falando de storytelling com dados, e de quebra vou mostrar duas ferramentas da linguagem Python para te auxiliar nessa missão!

Portanto, vamos entender alguns conceitos básicos para resolver nosso problema. E já vou dando um spoiler, vamos criar uma visualização com os dados abertos do IBAMA (Comunicação de Acidentes Ambientais). Até chegar lá, vamos entender o que é esse tal de storytelling! Vamos montar uma aplicação web com Dash! E vamos ver gráficos interativos com Plotly! Sem mais delongas, chega de conversa fiada, vamos ao que interessa.

1. O que é Storytelling?

Em primeiro lugar , storytelling é a arte de contar histórias, storytelling com dados não é diferente. Dessa forma, com técnicas e conceitos, é possível atingir o público alvo da melhor maneira. Se formos a fundo nos conceitos vamos chegar na saga do herói, que são 12 passos para se contar boas histórias. Mas quero ser mais objetivo e te mostrar de uma maneira prática, observe o gráfico abaixo que criei sobre o nosso problema.

Pensando no número de acidentes por estados, poderia ter apenas o gráfico acima, mas sem nenhuma história para contar. Mas quero te mostrar que podemos fazer melhor, então, observe o gráfico abaixo. É o mesmo que apresentei acima, porém agora acrescentei algumas informações para dar vida a ele.

Assim, vamos a algumas dicas da visualização acima:

  • O título já pode ser parte da história.
  • Destaque as informações principais.
  • Use as cores para melhorar a visualização.
  • Coloque informações que leve o público alvo a reflexão.

Esse é um assunto que daria um post inteiro, mas acho que já deu para melhorar o seu entendimento sobre o assunto. Então, se quiser aprofundar mais, leia o livro Storytelling com Dados de Cole Nussbaumer Knaflic. Juntamente com os nossos posts de boas práticas de visualização de dados:

Agora que já entendemos como contar histórias, vamos ver como criar uma aplicação web com Dash para colocar as histórias.

2. O que é Dash?

O Dash é uma ferramenta para criação de aplicativos analíticos baseados na web, tem o seu código-fonte aberto e pode ser utilizado na linguagem Python. Sendo assim, vamos ver de forma prática como criar uma aplicação com Dash.

2.1. Instalando o Dash para Python

Afinal, o que precisamos instalar o Dash? Para instalação da biblioteca do Dash vamos utilizar o seguinte comando no terminal.

pip install dash

No app vamos importar as bibliotecas python.

import dash
import dash_core_components as dcc
import dash_html_components as html

2.2. “Hello Dados ao Cubo” com Dash

Agora que já temos a instalação do Dash vamos fazer a primeira aplicação criando um arquivo “app.py”. Abaixo temos o código que o arquivo .py deve conter.

external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']

app = dash.Dash(__name__, external_stylesheets=external_stylesheets)

app.layout = html.Div(children=[
		html.H1(children='Helo Dados ao Cubo'),

		html.Div(
			[
				html.H6(
					"Dash: É um framework de aplicações web para Python.", className="subtitle padded"
				),
				html.Img(
					src='https://dash.plotly.com/assets/images/logo-plotly.png'
				),
				html.Img(
					src='https://dash.plotly.com/assets/images/logo-seperator.png'
				),
				html.Img(
					src='https://dash.plotly.com/assets/images/logo-dash.png'
				)
			],
			className="img",
		),
	])	
	
if __name__ == '__main__':
    app.run_server(debug=True)

Com o arquivo pronto vamos executar via terminal, conforme imagem abaixo.

Acessar a página onde está o arquivo “app.py”, em seguida executar o comando “python app.py”. Então vamos ter a mensagem “Dash is running on http://127.0.0.1:8050/ e ao acessar o endereço http://127.0.0.1:8050/ via navegador vai ser exibida a página da imagem abaixo.

Pronto, temos a aplicação web funcionando! Para conferir esse código completo, deixei disponível no GitHub do Dados ao Cubo. Agora vamos colocar os gráficos Plotly nessa aplicação.

3. O que é Plotly?

Plotly é uma biblioteca para criação de gráficos interativos. Com ela podemos criar gráficos básicos (barras, pizzas e dispersão), gráficos estatísticos (histogramas e diagramas de caixas), gráficos financeiros (séries temporais) e muitos outros. A biblioteca Plotly é de código-fonte aberto, e também podemos utilizar a linguagem Python. Vamos ver de forma prática como integrar os gráficos Plotly na aplicação web com Dash.

3.1. Instalando o Plotly para Python

Para instalação da biblioteca do Plotly vamos utilizar o seguinte comando no terminal.

pip install plotly

No app vamos importar as bibliotecas python, para gerar os gráficos.

import plotly.express as px

3.2. Plotly com Dash

Para ter dados e gerar os gráficos, vamos usar exemplos disponibilizados no próprio site do plotly. Vamos seguir os passos abaixo:

# 1 - Carregamos os dados
data_canada = px.data.gapminder().query("country == 'Canada'")
# 2 - Criamos um gráfico do tipo bar
bar = px.bar(data_canada, x='year', y='pop')
# 3 - Fazemos a chamada do nosso gráfico dentro do layout do app
html.Div(
	[
		html.H6(
			"Aqui temos um exemplo de gráfico Bar Charts", className="subtitle padded"
		),
		dcc.Graph(
			id='example-bar',
			figure=bar
		)
	],
	className="img",
)

Então temos o gráfico no app, conforme imagem abaixo.

Vamos colocar mais um gráfico, então novamente, vamos seguir os passos abaixo:

# 1 - Carregamos os dados
data_country = px.data.gapminder().query("year==2007")
# 2 - Criamos um gráfico do tipo bubble
bubble = px.scatter(data_country, x="gdpPercap", y="lifeExp",
                               size="pop", color="continent",
            	       hover_name="country", log_x=True, size_max=60)
# 3 - Fazemos a chamada do nosso gráfico dentro do layout do app
html.Div(
	[
		html.H6(
			"Aqui temos um exemplo de gráfico Bubble Charts", className="subtitle padded"
		),
		dcc.Graph(
			id='example-bubble',
			figure=bubble
		)
	],
	className="img",
)

Então temos o gráfico no app, conforme imagem abaixo.

Agora que já vimos essa introdução em Storytelling, Dash e Plotly. Podemos usar essas ferramentas para resolver o nosso problema.

4. O Problema

Foi solicitado uma análise para encontrar possíveis insights em uma base de dados abertos do IBAMA de Comunicação de Acidentes Ambientais. Para isso vamos utilizar as ferramentas que vimos até aqui, Storytelling com dados, aplicação web com Dash e gráficos com o Plotly. Para começar a entender os dados que estamos trabalhando vamos realizar uma análise exploratória deles, vamos desbravar, enfim, vamos fazer os dados falarem.

4.1. Análise Exploratória dos Dados

Primeiramente criei um notebook jupyter, ferramenta muito comum na ciência de dados. Dessa forma podemos fazer uma análise exploratória dos dados bem completa. Como resultado, na imagem abaixo utilizando a ferramenta colab é possível ver uma das visualizações da análise. Onde temos uma nuvem de palavras que mostra a descrição das ocorrências. Assim já podemos perceber as palavras mais citadas nessas descrições dos acidentes.

Clicando AQUI, você acessa esse código e confere toda essa análise. Após essa análise selecionei alguns gráficos com informações relevantes e montei uma aplicação. Vamos conferir!

4.2. Aplicação Web

Como resultado de tudo que vimos até aqui, criei a solução da imagem abaixo.

No Dash Accidents, nome que batizei a aplicação, separei algumas análises resultado da exploração dos dados. Você vai encontrar uma “Visão Geral” onde tem algumas informações resumidas, uns “Detalhes por Período” onde tem algumas análises temporais e uns “Detalhes por Localização” onde tem informações por territórios.

Clicando AQUI, você acessa esse código e confere toda a aplicação. Se desejar ver em funcionamento só acessar o link https://dash-accidents-report.herokuapp.com/, fiz o deploy na conhecida plataforma Heroku. Se quer aprender a fazer o deploy de sua aplicação também, confere um post que fala detalhadamente como fazer isso Deploy de Modelos com Heroku

5. Conclusões

Enfim, esse foi um problema apresentado na minha Especialização em Data Science! Logo, como gostei bastante da solução precisava compartilhar com todos. Portanto, entendemos o que é o storytelling, fomos apresentados ao Dash e ao Plotly! Então, entendemos o problema, exploramos os dados e por fim criamos um app como solução.

Portanto, para se aprofundar em storytelling com dados confere o livro que deixei nas referências de Cole Nussbaumer Knaflic. Assim como , para se aprofundar nas bibliotecas Dash e Plotly, o melhor caminho é a documentação oficial, também estão os links nas referências.

No mais, espero que tenham gostado do conteúdo, aquele feedback é super bem vindo! Gostaria de ouvir o que vocês acharam da solução proposta? Quais ferramentas vocês utilizariam para a solução? E por fim, qual conteúdo gostariam de ver aqui no Dados ao Cubo? Um abraço e até a próxima!

Referências

Gostou? Compartilhe!

Você pode gostar:

Comentários: