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

Ajouter un commentaire

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