ConsigneCrée des tableaux croisés dynamiques
Une table pivot transforme des lignes en colonnes pour croiser deux dimensions. C'est l'équivalent du tableau croisé dynamique Excel.
Syntaxe
pd.pivot_table( df, values='colonne_a_agreger', index='colonne_en_ligne', columns='colonne_en_colonne', aggfunc='sum' # ou 'mean', 'count', 'max', etc.)Forme équivalente : df.pivot_table(values=..., index=..., columns=..., aggfunc=...)
df = pd.DataFrame({ 'date': ['Lun','Lun','Mar','Mar','Mer','Mer'], 'produit': ['A','B','A','B','A','B'], 'ventes': [100, 150, 120, 130, 90, 160]})pd.pivot_table(df, values='ventes', index='date', columns='produit', aggfunc='sum')# produit A B# date# Lun 100 150# Mar 120 130# Mer 90 160fill_value=0 remplace les NaN par 0margins=True ajoute une ligne+colonne 'All' (totaux)aggfunc=['sum','mean'] plusieurs agrégations à la foisaggfunc={'col1':'sum', 'col2':'mean'} différentes par colonnepd.crosstab(df['date'], df['produit'])# produit A B# date# Lun 1 1# Mar 1 1# Mer 1 1pd.crosstab(df['date'], df['produit'], values=df['ventes'], aggfunc='sum')# avec une mesurepd.crosstab(df['date'], df['produit'], normalize=True)# en pourcentagesdf.pivot(...) n'agrège pas : crash si combinaisons en doublondf.pivot_table(...) agrège (avec aggfunc) → gère les doublons👉 En pratique, utilise toujours pivot_table.
Couplé à .plot(kind='bar'), une pivot table devient un graphique en barres groupées en une ligne.
Envie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →