Ottieni l'aggregato di Pandas Group-By e Sum

  1. Somma cumulativa con groupby
  2. pivot() per riorganizzare i dati in una bella tabella
  3. Applica la funzione a groupby in Pandas
  4. agg() per ottenere la somma aggregata della colonna
Ottieni l'aggregato di Pandas Group-By e Sum

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 
Ti piacciono i nostri tutorial? Iscriviti a DelftStack su YouTube per aiutarci a creare altre guide video di alta qualità. Iscriviti

Articolo correlato - Pandas DataFrame