Exercice 47 / 100

Pandas - pivot table

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

📖 Cours

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
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 0margins=True ajoute une ligne/colonne 'All' avec les totauxaggfunc=['mean', 'sum'] plusieurs agrégations à la foisaggfunc={'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.

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