groupby() permet de regrouper les lignes selon une (ou plusieurs) colonne(s), puis d'appliquer une agrégation (moyenne, somme, count...) sur chaque groupe.
C'est l'équivalent du group BY en sql.
Syntaxe
df.groupby('colonne_de_groupe')['colonne_a_agreger'].fonction()df = pd.DataFrame({
'nom': ['Alice','Bob','Charlie','Diana'],
'note': [14,11,17,13],
'ville': ['Paris','Lyon','Paris','Lyon']
})df.groupby('ville')['note'].mean()
# ville
# Lyon 12.0
# Paris 15.5Décomposé en 3 étapes (split-apply-combine) :
1. SPLIT : regroupe les lignes par valeur de 'ville' (Paris : Alice+Charlie ; Lyon : Bob+Diana)
2. APPLY : applique .mean() sur 'note' dans chaque groupe
3. COMBINE : assemble en une Series indexée par ville.min() / .max().first() / .last()# Plusieurs colonnes de groupe
df.groupby(['ville', 'sexe'])['salaire'].mean()# Plusieurs agrégations à la fois
df.groupby('ville')['note'].agg(['mean', 'min', 'max', 'count'])# Différentes agrégations par colonne
df.groupby('ville').agg({'note': 'mean', 'age': 'max'}).reset_index() après un groupby pour récupérer un DataFrame plat avec la colonne de groupe comme colonne normale.
Envie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →