Utiliser pivot_table() pour l’agrégation des données

La fonction pivot_table() de Pandas permet de créer un tableau croisé dynamique avec des données agrégées. Elle est utilisée pour résumer des données, appliquer des fonctions d’agrégation (comme la moyenne, la somme, le comptage, etc.), et organiser les résultats dans un format plus lisible.

Fonctions :

  • df.pivot_table(index='col1', columns='col2', values='col3', aggfunc='mean')

    La méthode pivot_table() permet de créer une table de contingence ou un tableau croisé dynamique à partir des données du DataFrame. Elle est utilisée pour agréger, regrouper et résumer des données selon différentes dimensions, avec des fonctions d'agrégation personnalisées (comme mean, sum, count, etc.). ➡️ C'est un pivot plus puissant que pivot(), car il permet de gérer les doublons et d'agréger les données.

    Importation :

    import pandas as pd

    Attributs :

    Paramètre Description
    index La ou les colonnes qui servent d’index dans la table résultat.
    columns Les colonnes à répartir en colonnes distinctes (valeurs deviennent en-têtes).
    values La ou les colonnes numériques sur lesquelles appliquer l’agrégation.
    aggfunc Fonction d'agrégation à appliquer (mean, sum, count, min, max, np.median, etc.).
    fill_value (optionnel) Valeur utilisée pour remplacer les valeurs manquantes dans la table (exemple : 0).
    margins (optionnel) Ajoute les totaux généraux si True.
    dropna (optionnel) Supprime les colonnes dont toutes les valeurs sont NaN si True.

    Exemple de code :

    import pandas as pd
    
    # Exemple de DataFrame
    df = pd.DataFrame({
        'Magasin': ['Paris', 'Paris', 'Lyon', 'Lyon', 'Paris'],
        'Produit': ['A', 'B', 'A', 'B', 'A'],
        'Vente': [100, 150, 80, 120, 130]
    })
    
    # Création d'une pivot_table
    pivot = df.pivot_table(index='Magasin',
                           columns='Produit',
                           values='Vente',
                           aggfunc='mean')
    
    print(pivot)

    Explication du code :

    La pivot_table créée :
      • index='Magasin' ➡️ Les lignes sont organisées par magasin.
      • columns='Produit' ➡️ Les colonnes deviennent les produits distincts (A et B).
      • values='Vente' ➡️ On utilise les données de la colonne Vente.
      • aggfunc='mean' ➡️ On calcule la moyenne des ventes par combinaison magasin-produit.

    🔹 Remarques pratiques

    • pivot_table() vs pivot()
      ➡️ pivot() échoue si plusieurs valeurs existent pour la même combinaison (index, columns).
      ➡️ pivot_table() gère les doublons via aggfunc (par défaut mean).

    • Tu peux changer l'agrégation en utilisant d'autres fonctions
    • Tu peux remplir les NaN avec fill_value :