0% acharam este documento útil (0 voto)
16 visualizações78 páginas

Python Modulo 10

O documento aborda a visualização de dados utilizando as bibliotecas Matplotlib e Seaborn, com foco em gráficos de barras e pizza, além de médias móveis. Exemplos práticos são apresentados, incluindo a visualização de dados sobre COVID-19 no Paraná. O texto também menciona a importância de rotular e estilizar gráficos para melhor interpretação dos dados.

Enviado por

Sidnei
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
16 visualizações78 páginas

Python Modulo 10

O documento aborda a visualização de dados utilizando as bibliotecas Matplotlib e Seaborn, com foco em gráficos de barras e pizza, além de médias móveis. Exemplos práticos são apresentados, incluindo a visualização de dados sobre COVID-19 no Paraná. O texto também menciona a importância de rotular e estilizar gráficos para melhor interpretação dos dados.

Enviado por

Sidnei
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Visualização de Dados

André Grégio
Paulo Almeida

JUSTIÇA 4.0: INOVAÇÃO E EFETIVIDADE NA REALIZAÇÃO DA JUSTIÇA PARA TODOS


PROJETO DE EXECUÇÃO NACIONAL BRA/20/015
1.
Matplotlib

2
Visualização com matplotlib

Referências para estudo:

▸ [Link]
ls-introductory-usage-py

▸ [Link]

3
Visualização de DataFrames com
matplotlib

▸ A biblioteca “tradicional” para confeccionar gráficos é a


MatPlotLib.
▸ Pandas faz uso da MatPlotLib de maneira fácil.
▸ Para usar os plots do MatPlotLib, além de importar o
Pandas no seu programa, faça:

import [Link] as plt

4
Visualização de DataFrames com
matplotlib

Relembrando o DataFrame de pessoas:

dados = {'nome': ["Ana", "Bob", "Cleo"],


'idade': [50, 36, 2],
'altura': [1.5, 1.73, .61]}

df = [Link](dados, columns = ['nome', 'idade', 'altura'])

5
Visualização de DataFrames com
matplotlib

[Link](x='idade', y='altura', kind='bar')


[Link]()

6
Visualização de DataFrames com
matplotlib
>>> sdf = df.sort_values('idade')
>>> [Link](x='idade', y='altura', kind='bar')
>>> [Link]()

7
Visualização de DataFrames com
matplotlib

Suponha um DataFrame composto pelo número de casos e óbitos


por COVID-19 no Paraná durante os meses de fev-mar/2022.

Casos Obitos
Data
2022-02-01 1987643 41056
2022-02-02 2005886 41095
2022-02-03 2032592 41109

2022-03-29 2400103 42679
2022-03-30 2402205 42690
2022-03-31 2404630 42700>

8
Visualização de DataFrames com
matplotlib

Suponha um DataFrame composto pelo número de casos e óbitos


por COVID-19 no Paraná durante os meses de fev-mar/2022.

Casos Obitos
Data
2022-02-01 1987643 41056
2022-02-02 2005886 41095
2022-02-03 2032592 41109 [Link]()
… [Link]()
2022-03-29 2400103 42679
2022-03-30 2402205 42690
2022-03-31 2404630 42700>

9
2.
Outros tipos de gráficos

10
Top 5: Dataframe Covid-19

MUNICÍPIO CASOS ÓBITOS POR COVID-19


20 Curitiba 245996 8163
305 Londrina 144141 2397
262 Maringá 115613 1735
44 Ponta Grossa 80137 1471
143 Cascavel 75249 1207

11
Tipos de Gráficos - Barras

12
Tipos de Gráficos - Barras

Como chegar neste gráfico?

13
Tipos de Gráficos - Barras

Vamos começar de forma mais simples…

MUNICÍPIO CASOS ÓBITOS POR COVID-19


20 Curitiba 245996 8163
305 Londrina 144141 2397
262 Maringá 115613 1735
44 Ponta Grossa 80137 1471
143 Cascavel 75249 1207

14
Tipos de Gráficos - Barras

Vamos começar de forma mais simples…

MUNICÍPIO CASOS ÓBITOS POR COVID-19


20 Curitiba 245996 8163
305 Londrina 144141 2397
262 Maringá 115613 1735
44 Ponta Grossa 80137 1471
143 Cascavel 75249 1207

[Link](kind='bar')
[Link]()

15
Tipos de Gráficos - Barras

???
[Link](kind='bar')
[Link]()

16
Tipos de Gráficos - Barras

Vamos rotular o eixo x de acordo com a coluna “MUNICÍPIOS”

MUNICÍPIO CASOS ÓBITOS POR COVID-19


20 Curitiba 245996 8163
305 Londrina 144141 2397
262 Maringá 115613 1735
44 Ponta Grossa 80137 1471
143 Cascavel 75249 1207

17
Tipos de Gráficos - Barras

Vamos rotular o eixo x de acordo com a coluna “MUNICÍPIOS”

MUNICÍPIO CASOS ÓBITOS POR COVID-19


20 Curitiba 245996 8163
305 Londrina 144141 2397
262 Maringá 115613 1735
44 Ponta Grossa 80137 1471
143 Cascavel 75249 1207

[Link](kind='barh', x='MUNICÍPIO', y=['CASOS', 'ÓBITOS POR COVID-19'])

[Link]()

18
Tipos de Gráficos - Barras

Vamos rotular o eixo x de acordo com a coluna “MUNICÍPIOS”

MUNICÍPIO CASOS ÓBITOS POR COVID-19


20 Curitiba 245996 8163 Eixo y
Eixo x
305 Londrina 144141 2397 (barras)
262 Maringá 115613 1735
44 Ponta Grossa 80137 1471
143 Cascavel 75249 1207

[Link](kind='barh', x='MUNICÍPIO', y=['CASOS', 'ÓBITOS POR COVID-19'])

[Link]()

19
Tipos de Gráficos - Barras

Vamos rotular o eixo x de acordo com a coluna “MUNICÍPIOS”

MUNICÍPIO CASOS ÓBITOS POR COVID-19


20 Curitiba 245996 8163
305 Londrina 144141 2397
262 Maringá 115613 1735
44 Ponta Grossa 80137 1471 Barra
143 Cascavel 75249 1207
horizontal

[Link](kind='barh', x='MUNICÍPIO', y=['CASOS', 'ÓBITOS POR COVID-19'])

[Link]()

20
Tipos de Gráficos - Barras (horizontais)

21
Tipos de Gráficos - Barras

E se quisermos ver as barras acumuladas?

MUNICÍPIO CASOS ÓBITOS POR COVID-19


20 Curitiba 245996 8163
305 Londrina 144141 2397
262 Maringá 115613 1735
44 Ponta Grossa 80137 1471
143 Cascavel 75249 1207

22
Tipos de Gráficos - Barras

ax = [Link](kind='bar', x='MUNICÍPIO',
y='CASOS')

[Link](kind='bar',
x='MUNICÍPIO',
y='ÓBITOS POR COVID-19',
ax=ax,
color='red')

[Link]()

23
Tipos de Gráficos - Barras

ax = [Link](kind='bar', x='MUNICÍPIO',
y='CASOS')

[Link](kind='bar',
x='MUNICÍPIO',
y='ÓBITOS POR COVID-19',
ax=ax,
color='red')

[Link]()

24
Tipos de Gráficos - Barras

25
Tipos de Gráficos - Barras

▸ Com eixo y rotulado:


[Link]("Quantidade")

26
Tipos de Gráficos - Barras

▸ Com eixo y rotulado:


[Link]("Quantidade")

27
Tipos de Gráficos - Barras

▸ Com rótulos do eixo x rotacionados 45 graus:


[Link](rotation=45)

28
Tipos de Gráficos - Barras

▸ Com rótulos do eixo x rotacionados 45 graus:


[Link](rotation=45)

29
Tipos de Gráficos - Barras

▸ Em escala logarítmica:
[Link]("log")

30
Tipos de Gráficos - Barras

▸ Em escala logarítmica:
[Link]("log")

31
Tipos de Gráficos - Barras

32
Top 5: Dataframe Covid-19

Vamos fazer um gráfico de pizza…

MUNICÍPIO CASOS ÓBITOS POR COVID-19


20 Curitiba 245996 8163
305 Londrina 144141 2397
262 Maringá 115613 1735
44 Ponta Grossa 80137 1471
143 Cascavel 75249 1207

33
Carregando os dados…

import pandas as pd
import [Link] as plt

df = pd.read_csv("Covid/informe_epidemiologico_31_03_2022_obitos_casos_municipio.csv",
delimiter=";",
usecols=['MUNICÍPIO', 'CASOS', 'ÓBITOS POR COVID-19'])

df.sort_values(by=['CASOS'], inplace=True, ascending=False)


top5 = [Link](5) # Obtém os 5 maiores valores

34
Tipos de Gráficos - Pizza

35
Tipos de Gráficos - Pizza

Como chegar neste gráfico?

36
Tipos de Gráficos - Pizza

import pandas as pd
import [Link] as plt
# Código do carregamento dos dados suprimido…

[Link](kind='pie',y='CASOS')

[Link]()

37
Tipos de Gráficos - Pizza

38
Tipos de Gráficos - Pizza

import pandas as pd
import [Link] as plt
# Código do carregamento dos dados suprimido…

[Link](kind='pie', y='CASOS', labels=top5['MUNICÍPIO'])

[Link]()

39
Tipos de Gráficos - Pizza

40
Tipos de Gráficos - Pizza

import pandas as pd
import [Link] as plt
# Código do carregamento dos dados suprimido…

[Link](kind='pie', y='CASOS', labels=top5['MUNICÍPIO'],


autopct='%1.1f%%')
[Link]()

41
Tipos de Gráficos - Pizza

42
3.
Médias Móveis

43
Rolling: médias móveis

Uma média móvel usa “janelas deslizantes” para mostrar a


média de um período de tempo, evitando conclusões
imprecisas devido a picos e vales sazonais.
▸ Permite melhor visualização das tendências dos dados
▸ “Achata” as flutuações que dificultam a interpretação

44
Rolling: médias móveis

Uma média móvel usa “janelas deslizantes” para mostrar a


média de um período de tempo, evitando conclusões
imprecisas devido a picos e vales sazonais.

Exemplo: Novos casos de COVID-19 de acordo com a Secretaria


de Saúde do Paraná

[Link]

45
Rolling: médias móveis

Exemplo: Novos casos de


COVID-19 de acordo com a
Secretaria de Saúde do
Paraná

[Link]
Pagina/Coronavirus-COVID-19

46
Rolling: médias móveis

Com a média móvel e janela de 7 dias…

47
Rolling: médias móveis

Trecho de Código:

ax=dfcovid['Novos'].plot(label="Novos Casos")
ax.set_ylabel("Casos")
ax.set_title("COVID-19 no PR")

mediamovel = [Link](7).mean()
[Link](label='Média Móvel', color='orange')

48
Rolling: médias móveis

Para outros tipos de rolling, basta substituir mean() pelo


método que se deseja, por exemplo, std().

Tipos de rolling possíveis:

[Link]

49
4.
Seaborn

50
Seaborn

Ferramenta para visualização de dados baseada em


Matplotlib.

Interface de (ainda mais) alto nível que o Matplotlib para


geração de gráficos.

51
relplot

relplot é uma função flexível para gerar gráficos mostrando as


relações entre variáveis.
Por padrão, os gráficos gerados são de dispersão (scatter)

Veja a documentação em:


[Link]/generated/[Link]

52
relplot

[Link](data=dados, x=nomeX, y=nomeY)

dados: conjunto de dados (e.g., dataframe Pandas)


x = nome da coluna que possui o eixo X
y = nome da coluna que possui o eixo Y

53
Para começar

Considere o arquivo [Link]

Nome;Prova1;Prova2;Período;Escola
Aluno 0;100;100;Manhã;Escola 1
Aluno 1;93;92;Manhã;Escola 1
Aluno 2;93;100;Manhã;Escola 1
Aluno 6;100;95;Manhã;Escola 1

54
Dispersão

Vamos exibir em um gráfico de dispersão a relação entre a


nota na primeira com a segunda prova para os alunos.

55
Exemplo

import pandas as pd
import seaborn as sns
import [Link] as plt

notas_df = pd.read_csv("[Link]",delimiter=';')

[Link](data=notas_df, x="Prova1", y="Prova2")


[Link]()

56
Tema

O Seaborn possui vários temas padrão para estilizar o gráfico


Use a função sns.set_theme()

Você pode chamar a função sem parâmetros (vai aplicar o


estilo padrão), ou modificar paletas, fontes, estilos, …

Veja a documentação aqui


[Link]/generated/seaborn.set_theme.html

57
Exemplo

import pandas as pd
import seaborn as sns
import [Link] as plt

notas_df = pd.read_csv("[Link]",delimiter=';')

sns.set_theme(palette="icefire")
[Link](data=notas_df, x="Prova1", y="Prova2")
[Link]()

58
Adicionando informações

Vamos mudar a cor e o formato de cada ponto de acordo com


o período que o aluno estuda

[Link](..., hue=cor, style=estilo)

cor: coluna no datraframe que controla a cor


estilo = coluna no datraframe que controla o estilo

59
Exemplo

import pandas as pd
import seaborn as sns
import [Link] as plt

notas_df = pd.read_csv("[Link]",delimiter=';')

sns.set_theme(palette="icefire")
[Link](data=notas_df, x="Prova1", y="Prova2", hue="Período", style="Período")
[Link]()

60
Múltiplos Plots

A opção col indica uma coluna para separar a série em


múltiplos gráficos
Vamos criar um gráfico por escola

61
Exemplo

import pandas as pd
import seaborn as sns
import [Link] as plt

notas_df = pd.read_csv("[Link]",delimiter=';')

sns.set_theme(palette="icefire")
[Link](data=notas_df, x="Prova1", y="Prova2",
hue="Período", style="Período", col="Escola")
[Link]()
62
Size

O parâmetro size coloca os tamanhos dos marcadores de


acordo com determinada coluna

63
Exemplo

import pandas as pd
import seaborn as sns
import [Link] as plt

notas_df = pd.read_csv("[Link]",delimiter=';')

sns.set_theme(palette="icefire")
[Link](data=notas_df, x="Prova1", y="Prova2", hue="Período",
style="Período", col="Escola", size="Idade")
[Link]()

64
5.
Regressões com Seaborn

65
Regressões

O Seaborn possui funções prontas para automaticamente criar


regressões e mostrá-las em gráficos

66
regplot

A função regplot por padrão cria uma regressão linear com os


dados.

[Link](data=Dados, x=colX, y=colY)

Dados: conjunto de dados


colX: coluna que contém o eixo X
colY: coluna que contém o eixo Y

67
Exemplo

Vamos considerar os dados do valor diário das ações da


Petrobrás entre 01/2021 e 03/2022.

Uma regressão linear vai mostrar se o valor da ação está com


tendência de alta ou baixa nesse período

68
Exemplo

import pandas as pd
import seaborn as sns
import [Link] as plt

petro_df = pd.read_csv("[Link]",delimiter=',', usecols=["Adj Close"])


petro_df.insert(0, "Index", range(0, len(petro_df)))

[Link](data=petro_df, x="Index", y="Adj Close");


[Link]()

69
Misturando Tudo

O Seaborn utiliza o Matplotlib


Podemos modificar os gráficos gerados pelo Seaborn
normalmente utilizando o que foi aprendido para o Matplotlib

70
Misturando Tudo

Vamos mostrar uma regressão apenas com os últimos 30 dias


da Petrobrás, e inserir o resto da série histórica diretamente
via comandos do Matplotlib

71
Misturando Tudo

import pandas as pd
import seaborn as sns
import [Link] as plt

petro_df = pd.read_csv("[Link]",delimiter=',', usecols=["Adj Close"])


petro_df.insert(0, "Index", range(0, len(petro_df)))

[Link](data=petro_df[len(petro_df)-30:len(petro_df)], x="Index", y="Adj


Close", scatter=False);
[Link](petro_df["Index"],petro_df["Adj Close"])
[Link]()

scatter=False para não mostrar o gráfico de dispersão


da regressão.
72
Ajustando polinômios

Ao inserir um inteiro N maior que 1 no parâmetro orderint,


o Seaborn fará um ajuste de um polinômio de grau N nos
dados através da função [Link]fit do Numpy

Veja a teoria sobre interpolação polinomial e ajuste de curvas


em [Link]/2021/10/29/numerical-analysis

73
Exemplo

import pandas as pd
import seaborn as sns
import [Link] as plt

petro_df = pd.read_csv("[Link]",delimiter=',', usecols=["Adj Close"])


petro_df.insert(0, "Index", range(0, len(petro_df)))

[Link](data=petro_df, x="Index", y="Adj Close", order=2)


[Link]()

74
Mais

Esses são apenas alguns exemplos sobre o que é possível fazer


com o Seaborn

Veja mais na documentação


Exemplos
Distribuições e histogramas
[Link]/tutorial/[Link]
Mapas de calor
[Link]/examples/spreadsheet_heatmap.html
75
6.
Teste seus conhecimentos

76
Teste seus conhecimentos

1. Replique tudo que foi ensinado durante as aulas no seu


computador para fixar os conhecimentos.
2. Reproduza os gráficos do tutorial do Seaborn - link na
página da disciplina.

77
Obrigado!
Bons Estudos!!!

78

Você também pode gostar