Exercice 47 / 100

Pandas - pivot table

Crée un DataFrame de ventes (colonnes: region, produit, montant) et génère une table pivot avec les régions en index et les produits en colonnes

Une table pivot croise deux dimensions catégorielles pour les agréger sur une mesure. C'est l'équivalent du tableau croisé dynamique d'Excel.

Syntaxe

df.pivot_table( values='colonne_a_agreger', index='colonne_en_ligne', columns='colonne_en_colonne', aggfunc='sum' # ou 'mean', 'count', etc. )
Une table pivot croise deux colonnes : chaque ligne tombe dans le seau de son couple région et produit, et l'agrégation se fait à l'intérieur de chaque seau

Exemple : ventes par région et par produit

df = pd.DataFrame({ 'region': ['Nord', 'Sud', 'Nord', 'Sud', 'Nord'], 'produit': ['A', 'A', 'B', 'B', 'A'], 'ventes': [100, 80, 150, 120, 90] })
pivot = df.pivot_table( values='ventes', index='region', columns='produit', aggfunc='sum' )
print(pivot) # produit A B # region # Nord 190 150 # Sud 80 120

Paramètres utiles

fill_value=0 remplace les NaN (combinaisons sans données) par 0 margins=True ajoute une ligne/colonne 'All' avec les totaux aggfunc=['mean', 'sum'] plusieurs agrégations à la fois aggfunc={'col1': 'sum', 'col2': 'mean'} différentes par colonne

crosstab : version simplifiée pour COMPTER

Quand on veut juste compter le nombre d'observations par combinaison :

pd.crosstab(df['region'], df['produit']) # produit A B # region # Nord 2 1 # Sud 1 1

pivot_table gère automatiquement les doublons (avec aggfunc). Sa cousine df.pivot() ne le fait pas — utilise toujours pivot_table en pratique.

exercise.py

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