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 :
import pandas as pd
importe la bibliothèque pandas, renommée ici enpd
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é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.