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