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