Pandas : comment regrouper deux colonnes et agréger
Vous pouvez utiliser la syntaxe de base suivante avec la fonction groupby() dans pandas pour regrouper par deux colonnes et agréger une autre colonne :
df.groupby(['var1', 'var2'])['var3'].mean()
Cet exemple particulier regroupe le DataFrame par les colonnes var1 et var2 , puis calcule la moyenne de la colonne var3 .
Les exemples suivants montrent comment regrouper sur deux colonnes et agréger à l’aide du DataFrame pandas suivant :
import pandas as pd #create DataFrame df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B'], 'position': ['G', 'G', 'F', 'F', 'F', 'G', 'G', 'G', 'G', 'F'], 'points': [15, 22, 24, 25, 20, 35, 34, 19, 14, 12]}) #view DataFrame print(df) team position points 0 A G 15 1 A G 22 2 A F 24 3 A F 25 4 A F 20 5 B G 35 6 B G 34 7 B G 19 8 B G 14 9 B F 12
Exemple 1 : regrouper deux colonnes et calculer la moyenne d’une autre colonne
Nous pouvons utiliser la syntaxe suivante pour calculer la valeur moyenne de la colonne de points , regroupée par les colonnes équipe et position :
#calculate mean of points grouped by team and position columns
df.groupby(['team', 'position'])['points'].mean()
team position
A F 23.0
G 18.5
B F 12.0
G 25.5
Name: points, dtype: float64
À partir du résultat, nous pouvons voir :
- La valeur moyenne des points des joueurs de l’équipe A en position F est de 23 .
- La valeur moyenne des points des joueurs de l’équipe A en position G est de 18,5 .
Et ainsi de suite.
Exemple 2 : regrouper deux colonnes et calculer le maximum d’une autre colonne
Nous pouvons utiliser la syntaxe suivante pour calculer la valeur maximale de la colonne de points , regroupée par les colonnes équipe et position :
#calculate max of points grouped by team and position columns
df.groupby(['team', 'position'])['points'].max()
team position
A F 25
G 22
B F 12
G 35
Name: points, dtype: int64
À partir du résultat, nous pouvons voir :
- La valeur maximale de points pour les joueurs de l’équipe A en position F est de 25 .
- La valeur maximale de points pour les joueurs de l’équipe A en position G est de 22 .
Et ainsi de suite.
Exemple 3 : Regrouper par deux colonnes et compter les occurrences
Nous pouvons utiliser la syntaxe suivante pour compter les occurrences de chaque combinaison des colonnes équipe et position :
#count occurrences of each combination of team and position columns
df.groupby(['team', 'position']).size()
team position
A F 3
G 2
B F 1
G 4
dtype: int64
À partir du résultat, nous pouvons voir :
- Il y a 3 joueurs dans l’équipe A en position F.
- Il y a 2 joueurs dans l’équipe A en position G.
Et ainsi de suite.
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans les pandas :
Comment compter les valeurs uniques à l’aide de Pandas GroupBy
Comment appliquer une fonction à Pandas Groupby
Comment créer un tracé à barres à partir de Pandas GroupBy