Comment effectuer une somme GroupBy dans Pandas (avec exemples)
Vous pouvez utiliser la syntaxe de base suivante pour trouver la somme des valeurs par groupe dans les pandas :
df.groupby(['group1','group2'])['sum_col'].sum().reset_index()
Les exemples suivants montrent comment utiliser cette syntaxe en pratique avec le DataFrame pandas suivant :
import pandas as pd #create DataFrame df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], 'position': ['G', 'G', 'F', 'C', 'G', 'F', 'F', 'C'], 'points': [25, 17, 14, 9, 12, 9, 6, 4], 'rebounds': [11, 8, 10, 6, 6, 5, 9, 12]}) #view DataFrame df team position points rebounds 0 A G 25 11 1 A G 17 8 2 A F 14 10 3 A C 9 6 4 B G 12 6 5 B F 9 5 6 B F 6 9 7 B C 4 12
Exemple 1 : regrouper par une colonne, additionner une colonne
Le code suivant montre comment regrouper par colonne et additionner les valeurs dans une colonne :
#group by team and sum the points
df.groupby(['team'])['points'].sum().reset_index()
team points
0 A 65
1 B 31
D’après le résultat, nous pouvons voir que :
- Les joueurs de l’équipe A ont marqué un total de 65 points.
- Les joueurs de l’équipe B ont marqué un total de 31 points.
Exemple 2 : regrouper par plusieurs colonnes, additionner plusieurs colonnes
Le code suivant montre comment regrouper sur plusieurs colonnes et additionner plusieurs colonnes :
#group by team and position, sum points and rebounds
df.groupby(['team', 'position'])['points', 'rebounds'].sum().reset_index()
team position points rebounds
0 A C 9 6
1 A F 14 10
2 A G 42 19
3 B C 4 12
4 B F 15 14
5 B G 12 6
D’après le résultat, nous pouvons voir que :
- Les joueurs de l’équipe A en position « C » ont marqué un total de 9 points et 6 rebonds.
- Les joueurs de l’équipe A en position « F » ont marqué un total de 14 points et 10 rebonds.
- Les joueurs de l’équipe A en position « G » ont marqué un total de 42 points et 19 rebonds.
Et ainsi de suite.
Notez que la fonction reset_index() empêche les colonnes de regroupement de faire partie de l’index.
Par exemple, voici à quoi ressemble le résultat si nous ne l’utilisons pas :
#group by team and position, sum points and rebounds
df.groupby(['team', 'position'])['points', 'rebounds'].sum()
points rebounds
team position
A C 9 6
F 14 10
G 42 19
B C 4 12
F 15 14
G 12 6
Selon la façon dont vous souhaitez que les résultats apparaissent, vous pouvez ou non choisir d’utiliser la fonction reset_index() .
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres opérations de regroupement courantes dans les pandas :
Comment compter les observations par groupe chez les pandas
Comment trouver la valeur maximale par groupe chez Pandas
Comment calculer les quantiles par groupe dans Pandas