Como traçar histogramas por grupo no pandas


Você pode usar os seguintes métodos para traçar histogramas por grupo em um DataFrame do pandas:

Método 1: traçar histogramas por grupo usando gráficos múltiplos

 df[' values_var ']. hist (by=df[' group_var '])

Método 2: traçar histogramas por grupo usando um único gráfico

 plt. hist (group1, alpha= 0.5 , label=' group1 ')
plt. hist (group2, alpha= 0.5 , label=' group2 ')
plt. hist (group3, alpha= 0.5 , label=' group3 ')

Os exemplos a seguir mostram como usar cada método na prática com o seguinte DataFrame do pandas, que mostra os pontos marcados por jogadores de basquete de três times diferentes:

 import pandas as pd
import numpy as np

#make this example reproducible
n.p. random . seeds (1)

#createDataFrame
df = pd. DataFrame ({' team ': np.repeat ([' A ',' B ',' C '], 100 ),
                   ' points ': np. random . normal (loc= 20 , scale= 2 , size= 300 )})

#view head of DataFrame
print ( df.head ())

  team points
0 A 23.248691
1 A 18.776487
2 A 18.943656
3 A 17.854063
4 A 21.730815

Exemplo 1: traçar histogramas por grupo usando vários gráficos

O código a seguir mostra como criar três histogramas exibindo a distribuição dos pontos marcados pelos jogadores de cada uma das três equipes:

 #create histograms of points by team
df[' points ']. hist (by=df[' team '])

Também podemos usar o argumento edgecolor para adicionar linhas de borda a cada histograma e o argumento figsize para aumentar o tamanho de cada histograma e torná-los mais fáceis de visualizar:

 #create histograms of points by team
df[' points ']. hist (by=df[' team '], edgecolor=' black ', figsize = ( 8 , 6 )) 

Exemplo 2: traçar histogramas por grupo usando um único gráfico

O código a seguir mostra como criar três histogramas e colocá-los todos no mesmo gráfico:

 import matplotlib.pyplot as plt

#define points values by group
A = df. loc [df[' team '] == ' A ', ' points ']
B = df. loc [df[' team '] == ' B ', ' points ']
C = df. loc [df[' team '] == ' C ', ' points ']

#add three histograms to one plot
plt. hist (A, alpha= 0.5 , label=' A ')
plt. hist (B, alpha= 0.5 , label=' B ')
plt. hist (C, alpha= 0.5 , label=' C ')

#add plot title and axis labels
plt. title (' Points Distribution by Team ')
plt. xlabel (' Points ')
plt. ylabel (' Frequency ')

#add legend
plt. legend (title=' Team ')

#displayplot
plt. show ()

O resultado final é um gráfico exibindo três histogramas empilhados uns sobre os outros.

Nota : O argumento alfa especifica a transparência de cada histograma. Este valor pode variar de 0 a 1. Ao definir este valor igual a 0,5, podemos visualizar melhor cada histograma sobreposto.

Recursos adicionais

Os tutoriais a seguir explicam como criar outros gráficos comuns em Python:

Como plotar múltiplas linhas no Matplotlib
Como criar um boxplot a partir do Pandas DataFrame
Como plotar múltiplas colunas Pandas em um gráfico de barras

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *