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)
    Résultat du code

    Explication du code :

    import pandas as pd importe la bibliothèque pandas, renommée ici en pd pour simplifier son utilisation dans le code.

    Création d'un DataFrame avec un MultiIndex

    Le code crée un DataFrame nommé df avec trois colonnes : 'col1', 'col2', et 'valeur'. Les données de chaque colonne sont spécifiées comme des listes dans le dictionnaire passé à pd.DataFrame().

    Appliquer groupby avec aggregation 'sum' après avoir groupé par 'col1' et 'col2'

    La méthode groupby(['col1', 'col2']) groupe les données du DataFrame par les colonnes 'col1' et 'col2', créant ainsi des sous-groupes selon ces colonnes. Ensuite, la méthode agg('sum') applique une agrégation pour chaque sous-groupe, en calculant la somme des valeurs de la colonne 'valeur'.

    resultat = df.groupby(['col1', 'col2']).agg('sum') crée un DataFrame agrégé nommé resultat, qui contient la somme des valeurs pour chaque combinaison unique des colonnes 'col1' et 'col2'.

    Afficher le résultat

    La fonction print() affiche le contenu de resultat, montrant le DataFrame agrégé avec les sommes des valeurs pour chaque groupe.