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.
)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 120fill_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 colonneQuand 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 1pivot_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 →