Ottieni l'aggregato di Pandas Group-By e Sum
-
Somma cumulativa con
groupby
-
pivot()
per riorganizzare i dati in una bella tabella -
Applica la
funzione
agroupby
in Pandas -
agg()
per ottenere la somma aggregata della colonna
Dimostreremo come ottenere l’aggregato in Pandas usando groupby
e sum
. Esamineremo anche la funzionalità pivot
per disporre i dati in una bella tabella e definire la nostra funzione personalizzata ed eseguirla sul DataFrame
. Otterremo anche la somma aggregata usando agg()
.
Somma cumulativa con groupby
Possiamo ottenere la somma cumulativa utilizzando il metodo groupby
. Considera il seguente Dataframe con le colonne Date
, Fruit
e Sale
:
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],
}
)
Se vogliamo calcolare la somma cumulativa di Sale per Fruit e per ogni data, possiamo fare:
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())
Produzione:
Fruit Date Sale
Apple 08/09/2018 34
10/09/2018 46
Banana 08/09/2018 22
10/09/2018 49
pivot()
per riorganizzare i dati in una bella tabella
Il metodo pivot()
potrebbe impostare l’attributo di riga e colonna della tabella. Cambiamo il codice sopra e applichiamo il metodo pivot()
per riorganizzare i dati in una bella tabella:
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)
)
Produzione:
Sale
Date 08/09/2018 10/09/2018
Fruit
Apple 34 12
Banana 22 27
Applica la funzione
a groupby
in Pandas
Creeremo un metodo semplice per ottenere il conteggio dei valori in series
o 1d array
e utilizzeremo groupby
per ottenere il conteggio aggregato di ciascun valore:
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)
Dopo aver eseguito il codice, otterremo il seguente output, che fornisce l’occorrenza di ogni valore nella serie.
Produzione:
series
1 3
2 1
4 2
5 1
Name: series, dtype: int64
agg()
per ottenere la somma aggregata della colonna
Possiamo usare agg()
per applicare l’operazione di somma sulla colonna. Codici di esempio:
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"))
Produzione:
Fruit
Apple 46
Banana 49
Name: Sale, dtype: int64