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 :
-
groupby(['col1', 'col2'])
:- Cette fonction regroupe les données selon les colonnes
col1
etcol2
. Si ces colonnes contiennent des valeurs uniques, elles serviront de groupes pour l'agrégation.
- Cette fonction regroupe les données selon les colonnes
-
.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.
- Cette méthode applique une fonction d'agrégation aux groupes définis. Ici,
-
MultiIndex
:- Si
df
est un DataFrame avec unMultiIndex
(par exemple, une structure avec plusieurs niveaux d'index),groupby()
peut être utilisé pour regrouper les données par plusieurs niveaux d'index.
- Si
🔹 Remarques pratiques
-
Gestion des données avec un
MultiIndex
:
Lorsque vous utilisezgroupby()
sur un DataFrame avec unMultiIndex
, 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 commemean
,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 utiliserreset_index()
pour réinitialiser l'index.
-