Partie 3 · Agrégation
Agréger avec groupby, agg et pivot
Produire une analyse, c'est résumer : un indicateur par groupe. groupby regroupe les lignes selon les valeurs d'une ou plusieurs colonnes, puis on applique une agrégation : df.groupby('Région')['Ventes'].sum().
| Fonction | Calcule |
|---|---|
.sum(), .mean() | somme, moyenne par groupe |
.count() | nombre d'observations non nulles |
.size() | nombre de lignes du groupe (nulls compris) |
.min() / .max() | valeurs extrêmes du groupe |
.agg(['mean','median','std']) | plusieurs statistiques à la fois, une colonne par fonction |
Grouper par plusieurs colonnes produit un index à plusieurs niveaux (une ligne par couple de valeurs). pd.pivot_table(values, index, columns, aggfunc) restructure en tableau croisé : les valeurs d'une colonne deviennent des colonnes.
Python pur
from collections import defaultdict groupes = defaultdict(list) for l in ventes: groupes[l["categorie"]].append(l["valeur"]) {k: sum(v) for k, v in groupes.items()} # groupby(...).sum() {k: len(v) for k, v in groupes.items()} # groupby(...).size()
Vérifie que tu as compris
.count() et .size() ?Vérifie que tu as compris
groupby(['Catégorie', 'Compte'])['Valeur'].max() ?À toi de coder
À toi de coder
Pivot : un tableau croisé
Un pivot met une variable en lignes, une autre en colonnes, et agrège à leur croisement. Pour ventes : catégories en lignes, comptes en colonnes, somme des valeurs.
| c1 | c2 | |
|---|---|---|
| A | 40 | 20 |
| B | 20 | — |
La case (B, c2) est vide : aucune observation. pandas y met NaN (ou une valeur de fill_value).
Vérifie que tu as compris
pivot_table, que désigne le paramètre columns ?