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

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *