GroupBy et agréger plusieurs colonnes dans Pandas
La bibliothèque Pandas est une puissante bibliothèque d’analyse de données en Python. Nous pouvons effectuer de nombreux types de manipulations sur une trame de données en utilisant Pandas en Python.
Le groupby()
est une méthode qui divise les données en plusieurs groupes en fonction de critères spécifiques. Après cela, nous pouvons effectuer certaines opérations sur les données groupées.
Appliquer les fonctions groupby()
et aggregate()
sur plusieurs colonnes dans Pandas Python
Parfois, nous devons regrouper les données de plusieurs colonnes et appliquer des méthodes aggregate()
. Les méthodes aggregate()
sont les méthodes qui combinent les valeurs de plusieurs lignes et renvoient une seule valeur, par exemple, count()
, size()
, mean()
, sum()
, mean()
, etc.
Dans le code suivant, nous avons les données des étudiants qui contiennent des valeurs redondantes pour certaines colonnes. Si vous souhaitez regrouper les données en fonction du Name
et de la Section
de l’étudiant pour obtenir ses notes totales, nous regrouperons les données en fonction du nom et de la section, puis calculerons les notes totales à l’aide de la méthode aggregate()
.
Nous avons stocké le résultat renvoyé et l’avons affiché.
Exemple de code :
# Python 3.x
import pandas as pd
student = {
"Name": ["Jhon", "Alia", "Jhon", "Alia", "Sam", "Smith", "Sam", "Smith"],
"Section": ["A", "A", "A", "A", "B", "B", "B", "B"],
"Course": ["Java", "Java", "Dart", "Dart", "Java", "Java", "Dart", "Dart"],
"Marks": [70, 80, 90, 60, 80, 90, 50, 80],
}
df = pd.DataFrame(student)
display(df)
result = df.groupby(["Name", "Section"]).aggregate("sum")
display(result)
Production:
Nous pouvons également effectuer plusieurs opérations d’agrégation à la fois. Nous allons passer la liste des noms d’opérations à la méthode aggregate()
.
Ici, nous avons calculé les notes moyennes et totales des élèves en une fois en utilisant la méthode aggregate()
en passant la liste des noms d’opérations.
Exemple de code :
# Python 3.x
import pandas as pd
student = {
"Name": ["Jhon", "Alia", "Jhon", "Alia", "Sam", "Smith", "Sam", "Smith"],
"Section": ["A", "A", "A", "A", "B", "B", "B", "B"],
"Course": ["Java", "Java", "Dart", "Dart", "Java", "Java", "Dart", "Dart"],
"Marks": [70, 80, 90, 60, 80, 90, 50, 80],
}
df = pd.DataFrame(student)
display(df)
result = df.groupby(["Name", "Section"]).aggregate(["mean", "sum"])
display(result)
Production:
I am Fariba Laiq from Pakistan. An android app developer, technical content writer, and coding instructor. Writing has always been one of my passions. I love to learn, implement and convey my knowledge to others.
LinkedIn