Comment obtenir l'agrégat des Pandas par groupe et par somme
-
Somme cumulée avec
groupby
-
pivot()
pour réorganiser les données dans un tableau -
Appliquer la fonction à
groupby
dans Pandas -
agg()
pour obtenir la somme agrégée de la colonne
Nous démontrerons que nous obtenons l’agrégat Pandas par groupe
(groupby
) et par somme
. Nous examinerons également la fonctionnalité pivot
qui permet d’organiser les données dans un joli tableau et comment nous pouvons définir notre fonction personnalisée et l’appliquer sur le DataFrame
. Nous obtiendrons également la somme globale en utilisant agg()
.
Somme cumulée avec groupby
Nous pouvons obtenir la somme cumulative en utilisant la méthode groupby
. Considérons le DataFrame suivante avec la date, le nom du fruit et la vente à cette date:
import pandas as pd
df = pd.DataFrame(
{
"Date": ["08/09/2018", "10/09/2018", "08/09/2018", "10/09/2018"],
"Fruit": [
"Apple",
"Apple",
"Banana",
"Banana",
],
"Sale": [34, 12, 22, 27],
}
)
Si nous voulons calculer la somme cumulée des ventes par fruit et pour chaque date, nous pouvons le faire:
import pandas as pd
df = pd.DataFrame(
{
"Date": ["08/09/2018", "10/09/2018", "08/09/2018", "10/09/2018"],
"Fruit": [
"Apple",
"Apple",
"Banana",
"Banana",
],
"Sale": [34, 12, 22, 27],
}
)
print(df.groupby(by=["Fruit", "Date"]).sum().groupby(level=[0]).cumsum())
Production:
Fruit Date Sale
Apple 08/09/2018 34
10/09/2018 46
Banana 08/09/2018 22
10/09/2018 49
pivot()
pour réorganiser les données dans un tableau
La méthode pivot()
peut définir les attributs de ligne et de colonne du tableau. Changeons le code ci-dessus et appliquons la méthode pivot()
pour réarranger les données dans un beau tableau:
import pandas as pd
df = pd.DataFrame(
{
"Date": ["08/09/2018", "10/09/2018", "08/09/2018", "10/09/2018"],
"Fruit": [
"Apple",
"Apple",
"Banana",
"Banana",
],
"Sale": [34, 12, 22, 27],
}
)
print(
df.groupby(["Fruit", "Date"], as_index=False).sum().pivot("Fruit", "Date").fillna(0)
)
Production:
Sale
Date 08/09/2018 10/09/2018
Fruit
Apple 34 12
Banana 22 27
Appliquer la fonction à groupby
dans Pandas
Nous allons créer une méthode simple pour obtenir le nombre de valeurs dans un tableau de séries ou un tableau 1d et utiliser un groupe par groupe pour obtenir le nombre total de chaque valeur:
from pandas import *
d = {"series": Series(["1", "2", "1", "1", "4", "4", "5"])}
df = DataFrame(d)
def get_count(values):
return len(values)
grouped_count = df.groupby("series").series.agg(get_count)
print(grouped_count)
Après avoir exécuté le code, nous obtiendrons la sortie suivante qui fournit l’occurrence de chaque valeur dans la série.
Production:
series
1 3
2 1
4 2
5 1
Name: series, dtype: int64
agg()
pour obtenir la somme agrégée de la colonne
Nous pouvons utiliser agg()
pour appliquer l’opération de somme sur la colonne. Considérons le code suivant:
import pandas as pd
df = pd.DataFrame(
{
"Date": ["08/09/2018", "10/09/2018", "08/09/2018", "10/09/2018"],
"Fruit": [
"Apple",
"Apple",
"Banana",
"Banana",
],
"Sale": [34, 12, 22, 27],
}
)
print(df.groupby(["Fruit"])["Sale"].agg("sum"))
Production:
Fruit
Apple 46
Banana 49
Name: Sale, dtype: int64
Article connexe - Pandas DataFrame
- Comment obtenir les en-têtes de colonne de Pandas DataFrame sous forme de liste
- Comment supprimer une colonne de Pandas DataFrame
- Comment convertir la colonne DataFrame en date-heure dans Pandas
- Comment convertir un float en un entier dans Pandas DataFrame
- Comment trier le DataFrame de Pandas par les valeurs d'une colonne