Exercice 68 / 100

Pandas — GroupBy

Agrège des données avec groupby()

groupby est l'opération la plus puissante de pandas. Modèle split-apply-combine :

SPLIT : regrouper les lignes par valeur(s) d'une (ou plusieurs) colonne(s) APPLY : appliquer une fonction (mean, sum, custom...) à chaque groupe COMBINE : assembler le résultat

Forme de base

df.groupby('dept')['salaire'].mean()

Renvoie une Series indexée par les valeurs de 'dept'.

groupby ne calcule rien tout seul : il découpe les lignes par valeur, attend l'agrégation qui s'applique à l'intérieur de chaque groupe, puis assemble les résultats en un seul objet

Agrégations courantes

.sum() .mean() .median() .std() .var() .min() .max() .count() .size() .first() .last() .nunique()
.agg('mean')
équivalent

Différence count vs size :

count : nb de valeurs NON-nulles size : nb total de lignes (NaN inclus)

Plusieurs agrégations

# Plusieurs fonctions sur une colonne df.groupby('dept')['salaire'].agg(['mean', 'min', 'max'])
# Différentes fonctions par colonne df.groupby('dept').agg({'salaire': ['mean', 'max'], 'bonus': 'sum'})
# Renommer le résultat (named aggregation) df.groupby('dept').agg( salaire_moyen=('salaire', 'mean'), bonus_total=('bonus', 'sum'), )

Groupby multiple

df.groupby(['dept', 'ville'])['salaire'].mean() # → Series avec MultiIndex (dept, ville)
.unstack()
transforme un niveau d'index en colonnes (pratique pour visualiser)

Reset_index pour récupérer un DataFrame plat

df.groupby('dept')['salaire'].mean().reset_index() # → DataFrame avec 2 colonnes (dept, salaire) au lieu d'une Series

Exemple complet

df = pd.DataFrame({ 'dept': ['Tech','RH','Tech','Finance','RH','Tech'], 'salaire': [55000, 42000, 62000, 58000, 45000, 47000], 'bonus': [5000, 3000, 7000, 4000, 3500, 4500] })
print(df.groupby('dept')['salaire'].mean()) # dept # Finance 58000.0 # RH 43500.0 # Tech 54666.6...
print(df.groupby('dept').agg({'salaire': ['mean', 'max'], 'bonus': 'sum'}))

groupby est paresseux : groupby() ne calcule rien tant qu'on n'appelle pas une agrégation. Cela permet d'enchaîner des opérations efficacement.

exercise.py

Envie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →