Fusionner et regrouper des DataFrames avec MultiIndex

La fusion et le regroupement des DataFrames avec un MultiIndex permettent de combiner plusieurs ensembles de données ou d’agréger des informations en fonction de plusieurs niveaux d’index. Vous pouvez fusionner des DataFrames en utilisant des jointures sur les indices, puis regrouper les données pour effectuer des calculs d’agrégation comme la somme ou la moyenne, tout en prenant en compte les différents niveaux d’index. Ces opérations sont utiles pour manipuler des données complexes structurées sur plusieurs dimensions.

Fonctions :

  • df.groupby(['col1', 'col2']).agg('sum')

    La fonction groupby() permet de regrouper un DataFrame selon une ou plusieurs colonnes. Une fois les données regroupées, vous pouvez appliquer des fonctions d'agrégation (comme sum, mean, etc.) à ces groupes. L'utilisation de agg() permet de spécifier l'agrégation souhaitée pour chaque groupe. Dans cet exemple, sum est appliqué pour sommer les valeurs de chaque groupe. Lorsqu'un MultiIndex est impliqué, groupby() permet de regrouper les données par plusieurs niveaux d'index. Une fois le regroupement effectué, vous pouvez facilement appliquer des fonctions d'agrégation pour résumer les données par groupe. Ce processus est couramment utilisé pour effectuer des analyses statistiques sur des sous-ensembles de données.

    Importation :

    import pandas as pd

    Attributs :

    Paramètre Type Description Valeur par défaut
    by list Liste de colonnes ou de niveaux de l'index par lesquels grouper les données. None
    aggfunc function, list, dict Fonction d'agrégation à appliquer aux groupes. Cela peut être une fonction, une liste de fonctions ou un dictionnaire de fonctions. None
    level int, str Niveau de l'index à grouper (pour les DataFrames avec un MultiIndex). None
    as_index bool Si True, l'index de la table résultante sera le(s) niveau(x) de groupement. Sinon, le groupement est effectué sur les colonnes et l'index est réinitialisé. True

    Exemple de code :

    import pandas as pd
    
    # Création d'un DataFrame avec un MultiIndex
    df = pd.DataFrame({
        'col1': ['A', 'A', 'B', 'B', 'A', 'B'],
        'col2': [1, 1, 2, 2, 1, 2],
        'valeur': [10, 20, 30, 40, 50, 60]
    })
    
    # Appliquer groupby avec aggregation 'sum' après avoir groupé par 'col1' et 'col2'
    resultat = df.groupby(['col1', 'col2']).agg('sum')
    
    # Afficher le résultat
    print(resultat)

    Explication du code :

    1. groupby(['col1', 'col2']) :

      • Cette fonction regroupe les données selon les colonnes col1 et col2. Si ces colonnes contiennent des valeurs uniques, elles serviront de groupes pour l'agrégation.
    2. .agg('sum') :

      • Cette méthode applique une fonction d'agrégation aux groupes définis. Ici, 'sum' indique que nous voulons calculer la somme des valeurs dans chaque groupe pour chaque colonne.
    3. MultiIndex :

      • Si df est un DataFrame avec un MultiIndex (par exemple, une structure avec plusieurs niveaux d'index), groupby() peut être utilisé pour regrouper les données par plusieurs niveaux d'index.
     

    🔹 Remarques pratiques

    • Gestion des données avec un MultiIndex :
      Lorsque vous utilisez groupby() sur un DataFrame avec un MultiIndex, les groupes créés par la combinaison des niveaux d'index deviennent les index du DataFrame résultant.

    • Flexibilité des fonctions d'agrégation :
      Vous pouvez utiliser d'autres fonctions d'agrégation comme mean, max, min, ou même des fonctions personnalisées pour effectuer des analyses complexes sur les données regroupées.

    • Réinitialisation de l'index :
      Par défaut, groupby() conserve les niveaux de groupement comme index dans le DataFrame résultant. Si vous souhaitez que les groupes ne deviennent pas des indices, vous pouvez utiliser reset_index() pour réinitialiser l'index.