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