Panda: come raggruppare due colonne e aggregarle
Puoi utilizzare la seguente sintassi di base con la funzione groupby() in panda per raggruppare per due colonne e aggregare un’altra colonna:
df. groupby ([' var1 ',' var2 '])[' var3 ']. mean ()
Questo particolare esempio raggruppa DataFrame per colonne var1 e var2 , quindi calcola la media della colonna var3 .
I seguenti esempi mostrano come raggruppare su due colonne e aggregare utilizzando il seguente DataFrame panda:
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B'], ' position ': ['G', 'G', 'F', 'F', 'F', 'G', 'G', 'G', 'G', 'F'], ' points ': [15, 22, 24, 25, 20, 35, 34, 19, 14, 12]}) #view DataFrame print (df) team position points 0 AG 15 1 AG 22 2 AF 24 3 AF 25 4 AF 20 5 BG 35 6 BG 34 7 BG 19 8 BG 14 9 BF 12
Esempio 1: raggruppa due colonne e calcola la media di un’altra colonna
Possiamo utilizzare la seguente sintassi per calcolare il valore medio della colonna dei punti , raggruppati per colonna squadra e posizione :
#calculate mean of points grouped by team and position columns
df. groupby ([' team ', ' position '])[' points ']. mean ()
team position
AF23.0
G 18.5
BF 12.0
G 25.5
Name: points, dtype: float64
Dal risultato possiamo vedere:
- Il valore medio dei punti dei giocatori della squadra A nella posizione F è 23 .
- Il valore medio dei punti dei giocatori della squadra A nella posizione G è 18,5 .
E così via.
Esempio 2: raggruppa due colonne e calcola il massimo di un’altra colonna
Possiamo utilizzare la seguente sintassi per calcolare il valore massimo della colonna dei punti , raggruppati per colonna squadra e posizione :
#calculate max of points grouped by team and position columns
df. groupby ([' team ', ' position '])[' points ']. max ()
team position
AF25
G22
BF 12
G 35
Name: points, dtype: int64
Dal risultato possiamo vedere:
- Il valore massimo in punti per i giocatori della squadra A nella posizione F è 25 .
- Il valore massimo in punti per i giocatori della squadra A nella posizione G è 22 .
E così via.
Esempio 3: raggruppare per due colonne e contare le occorrenze
Possiamo utilizzare la seguente sintassi per contare le occorrenze di ciascuna combinazione delle colonne squadra e posizione :
#count occurrences of each combination of team and position columns
df. groupby ([' team ', ' position ']). size ()
team position
AF3
G2
BF 1
G4
dtype: int64
Dal risultato possiamo vedere:
- Ci sono 3 giocatori della squadra A nella posizione F.
- Ci sono 2 giocatori della squadra A nella posizione G.
E così via.
Risorse addizionali
I seguenti tutorial spiegano come eseguire altre attività comuni nei panda:
Come contare valori univoci utilizzando Pandas GroupBy
Come applicare una funzione a Pandas Groupby
Come creare un grafico a barre da Pandas GroupBy