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 pdAttributs :
Paramètre Type Description Valeur par défaut bylist Liste de colonnes ou de niveaux de l'index par lesquels grouper les données. Noneaggfuncfunction, list, dict Fonction d'agrégation à appliquer aux groupes. Cela peut être une fonction, une liste de fonctions ou un dictionnaire de fonctions. Nonelevelint, str Niveau de l'index à grouper (pour les DataFrames avec un MultiIndex).Noneas_indexbool 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é.TrueExemple 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 :
import pandas as pdimporte la bibliothèque pandas, renommée ici enpdpour simplifier son utilisation dans le code.Création d'un DataFrame avec un MultiIndex
Le code crée un DataFrame nommé
dfavec 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éthodeagg('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 deresultat, montrant le DataFrame agrégé avec les sommes des valeurs pour chaque groupe.