Comment tracer des histogrammes par groupe chez Pandas
Vous pouvez utiliser les méthodes suivantes pour tracer des histogrammes par groupe dans un DataFrame pandas :
Méthode 1 : tracer des histogrammes par groupe à l’aide de plusieurs tracés
df['values_var'].hist(by=df['group_var'])
Méthode 2 : tracer des histogrammes par groupe à l’aide d’un seul tracé
plt.hist(group1, alpha=0.5, label='group1') plt.hist(group2, alpha=0.5, label='group2') plt.hist(group3, alpha=0.5, label='group3')
Les exemples suivants montrent comment utiliser chaque méthode dans la pratique avec le DataFrame pandas suivant qui montre les points marqués par les basketteurs de trois équipes différentes :
import pandas as pd import numpy as np #make this example reproducible np.random.seed(1) #create DataFrame 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
Exemple 1 : tracer des histogrammes par groupe à l’aide de plusieurs tracés
Le code suivant montre comment créer trois histogrammes affichant la répartition des points marqués par les joueurs de chacune des trois équipes :
#create histograms of points by team df['points'].hist(by=df['team'])
Nous pouvons également utiliser l’argument edgecolor pour ajouter des lignes de bord à chaque histogramme et l’argument figsize pour augmenter la taille de chaque histogramme afin de les rendre plus faciles à visualiser :
#create histograms of points by team df['points'].hist(by=df['team'], edgecolor='black', figsize = (8,6))
Exemple 2 : tracer des histogrammes par groupe à l’aide d’un seul tracé
Le code suivant montre comment créer trois histogrammes et les placer tous sur le même tracé :
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')
#display plot
plt.show()
Le résultat final est un tracé affichant trois histogrammes superposés.
Remarque : L’argument alpha précise la transparence de chaque histogramme. Cette valeur peut aller de 0 à 1. En définissant cette valeur égale à 0,5, nous pouvons mieux visualiser chaque histogramme superposé.
Ressources additionnelles
Les didacticiels suivants expliquent comment créer d’autres tracés courants en Python :
Comment tracer plusieurs lignes dans Matplotlib
Comment créer un boxplot à partir de Pandas DataFrame
Comment tracer plusieurs colonnes Pandas sur un graphique à barres