Pandas Groupby Aggregate

Pandas Groupby Aggregate



La tecnica groupby è essenziale per la capacità di aggregare i dati in termini di prestazioni e dimensioni del codice. Il termine 'groupby' in genere descrive una procedura che include i seguenti passaggi:

  • Scissione : applicando determinate condizioni ai set di dati, possiamo dividere i dati in gruppi.
  • Applicare : Un processo in cui applichiamo individualmente un metodo a ogni gruppo.
  • Combinando : una procedura per combinare vari set di dati per formare una struttura di dati dopo aver utilizzato il metodo groupby().

Nel processo di aggregazione viene calcolata una statistica riepilogativa per ciascun gruppo. Per ogni gruppo, il metodo aggregato restituisce un valore aggregato (valore singolo). Possiamo eseguire diverse operazioni di aggregazione sui dati raggruppati dopo aver diviso i dati in gruppi utilizzando la funzione groupby.







Perché i Panda forniscono una varietà di metodi di aggregazione dei dati?

I panda offrono un'ampia gamma di caratteristiche e funzioni per aiutare nell'analisi e nell'aggregazione dei dati. L'uso dei metodi pivot(), groupby() e pivot_table(), ad esempio, offre ciascuno una prospettiva diversa su come i dati verrebbero aggregati. Forniscono approcci pratici per svolgere vari compiti piuttosto che essere semplicemente riconfezionati.



Come utilizzare la funzione .agg() in Panda

Una semplice media o somma di valori è la funzione di aggregazione utilizzata più frequentemente. Puoi utilizzare la colonna di un frame di dati o più colonne per chiamare una funzione di aggregazione. Vedrai molti modi per aggregare i dati utilizzando il metodo groupby di Pandas. Per dimostrare quanto sia più semplice la procedura, diamo un'occhiata ad alcuni esempi riportati di seguito. Le operazioni matematiche di base come somma, minimo, massimo, deviazione media assoluta, deviazione standard, media, mediana, varianza e prodotto sono tra le funzioni di aggregazione integrate più utilizzate. Per riassumere i dati, possiamo combinare groupby e la funzione agg().



Esempio n. 01: determinare la somma delle colonne raggruppando i dati utilizzando la funzione groupby.agg()

Per prima cosa creeremo un dataframe utilizzando la funzione pd.DataFrame() in modo da poter raggruppare i dati dalla colonna o dalle colonne del dataframe e quindi determinare il loro valore medio. Dobbiamo importare i moduli di panda e la libreria numpy prima di creare il dataframe.





Come puoi vedere, abbiamo usato il dizionario panda per creare il nostro dataframe. Il nostro dataframe df ha quattro colonne: 'paziente', 'gruppo', 'età' e 'bottiglie di sangue'. I valori dei dati ('Ali', 'John', 'Mike', 'Mike', 'John', 'Ali', 'Ali', 'Mike') sono contenuti nella colonna 'paziente' mentre i valori dei dati ('A ', 'A', 'B', 'C', 'A', 'C', 'C', 'B'), (21, 22, 24, 21, 20, 24, 22, 22) e ( 2, 3, 1, 1, 2, 3, 2, 1) sono contenuti rispettivamente nelle colonne “gruppo”, “età” e “bottiglie di sangue”. Supponiamo di dover determinare la somma dei valori nella colonna 'blood_bottles' raggruppando i valori nella colonna 'group'.



Per i dati di gruppo 'A', la somma dei valori di 'blood_bottles' è 7. Per i valori di gruppo 'B' e 'C', la somma dei valori di 'blood_bottles' è rispettivamente 2 e 6. Possiamo anche raggruppare più colonne per determinare la somma per ogni gruppo.

Come si può osservare, abbiamo passato un elenco di etichette di colonna, ad esempio ['paziente', 'gruppo'] all'interno della funzione groupby() per creare i gruppi di categorie in ciascuna colonna specificata. Per ogni gruppo di colonne specificate, abbiamo determinato la somma dei valori in 'blood_bottles'. Ad esempio, 'Ali' è nei valori della colonna 'gruppo' A e C. Nel gruppo A, la somma dei valori di 'bottiglie di sangue' per Ali è 2 e 5 nel gruppo 'C'.

Esempio n. 02: Applicazione di più funzioni su una singola colonna di Dataframe utilizzando la funzione groupby.agg()

È possibile applicare più aggregazioni con il metodo 'groupby()' utilizzando la funzione panda agg(). Un elenco richiamabile può essere passato al metodo. Diamo un'occhiata a come possiamo aggregare i nostri dati utilizzando i metodi integrati della libreria numpy. A differenza dell'esempio precedente, applicheremo più funzioni a una singola colonna del dataframe. La funzione pd.DataFrame() verrà utilizzata per creare un dataframe per questo con almeno una colonna contenente valori numerici.


Il dataframe richiesto è stato creato con una colonna numerica, ad esempio 'voti' con i valori 41, 40, 35, 39, 49, 31, 34 e 42. Ci sono altre 3 colonne 'studente', 'materie' e 'laurea' nel nostro dataframe che può essere diviso in gruppi usando la funzione groupby(). I valori nella colonna 'studenti' e 'materie' sono ('Harry', 'Ron', 'Harry', 'Lana', 'Sam', 'Ron', 'Lana', 'Max') e ('C++' , 'JAVA', 'Python', 'Python', 'AI', 'JAVA', 'C++', 'AI'). Mentre il grado della colonna contiene i valori dei dati come stringhe, ad esempio ('Ms', 'Bs', 'Bs', 'Ms', 'Ms', 'Ms', 'Bs', 'Bs'). Supponiamo di dover raggruppare i dati della colonna 'soggetti' e determinare sia la media che la somma dei 'segni' di colonna per ciascun dato raggruppato.

Abbiamo specificato il nome della colonna 'soggetti' come una stringa all'interno della funzione groupby() per convertire i dati in gruppi di categorie. Per la colonna dei punteggi, abbiamo utilizzato il metodo agg() e all'interno della funzione agg() abbiamo specificato le funzioni numpy np.sum e np.mean per trovare la somma e la media dei voti di ciascun gruppo di dati negli oggetti delle colonne. La somma e il valore medio per il valore di gruppo 'AI' sono rispettivamente 91 e 45,5. La somma dei voti per il valore 'C++' è 75 e il valore medio è 37,5. Per il gruppo JAVA, la somma dei voti è 71 e il valore medio è 35,5, mentre la somma e il valore medio per Python sono rispettivamente 74 e 37.

Esempio n. 03: applicazione di più funzioni su più colonne del frame di dati utilizzando la funzione groupby.agg()

Invece di applicare funzioni diverse a una colonna di un singolo dataframe, possiamo applicare più funzioni a colonne numeriche diverse. Possiamo usare un dizionario nella funzione agg() come input per applicare un metodo di aggregazione specifico a diverse colonne di dataframe. Importiamo i panda e le librerie numpy prima di creare un dataframe con più colonne numeriche.

Ci sono quattro colonne nel dataframe appena creato con i nomi 'giocatore', 'punteggio_minimo', 'punteggio_più alto' e 'posizione'. Nella colonna 'giocatore', abbiamo memorizzato i nomi di alcuni giocatori come valori di dati stringa ('Leo', 'Alex', 'Leone', 'Fin', 'Leone', 'Alex', 'Fin', ' Fin'), nella colonna 'least_score' ci sono i punteggi più bassi dei giocatori per alcune partite (12, 34, 2, 21, 9, 1, 0, 34), mentre nella colonna 'highest_score' abbiamo i punteggi più alti dei giocatori (12, 34, 2, 21, 9, 1, 0, 34) e nella colonna 'località' ci sono i nomi delle sedi in cui i giocatori hanno giocato le loro partite ('Francia', 'Inghilterra', 'Dubai', ' Dubai', 'Inghilterra', 'Francia', 'Dubai', 'Francia').

Supponiamo che dopo aver raggruppato i dati nella colonna 'giocatori', dobbiamo trovare la media per i valori della colonna 'least_score' e la somma per i valori dei dati 'hightest_score' per ciascun gruppo.

All'interno della funzione agg(), abbiamo passato un dizionario Python {'highest_score' : 'sum', 'least_score' : 'mean'} per trovare la somma e il valore medio per una colonna specificata rispetto a ciascun gruppo. Si può notare che il valore raggruppato Alex ha la somma del valore 'highest_score' 132 e la media del valore 'least_score' 17,5. Per 'Fin' la somma dei valori è 199 e la media è 18,3333333 nelle colonne 'highest_score' e 'least_score' rispettivamente. Il valore di gruppo Leo ha un valore somma di 180 in 'punteggio_più alto' e un valore medio di 7,666667 in 'punteggio_minimo'.

Conclusione

In questo tutorial, abbiamo discusso le funzioni groupby() e di aggregazione nei panda. Abbiamo anche discusso di come usare la funzione groupby.agg(). Abbiamo implementato tre esempi in questo articolo per insegnarti come usare una singola funzione di aggregazione su una colonna dataframe raggruppando i dati di colonne singole e multiple, come applicare più funzioni di aggregazione su una singola colonna di un dataframe e come applicare più funzioni di aggregazione su più colonne del dataframe utilizzando la funzione groupby.agg().