Panda: come utilizzare aggfunc nella funzione crosstab()


Puoi utilizzare l’argomento aggfunc nella funzione pandas crosstab() per creare una tabella incrociata che aggrega valori utilizzando una metrica specifica:

 p.d. crosstab (index=df. col1 , columns=df. col2 , values=df. col3 , aggfunc=' count ')

Il valore predefinito di aggfunc è “count”, ma puoi specificare altri metodi di aggregazione come media, mediana, somma, minimo, massimo, ecc.

Puoi anche specificare più metodi di aggregazione nell’argomento aggfunc :

 p.d. crosstab (index=df. col1 , columns=df. col2 , values=df. col3 , aggfunc=[' min ', ' max '])

I seguenti esempi mostrano come utilizzare ciascuno di questi metodi nella pratica con i seguenti DataFrame panda:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'B', 'B', 'B', 'B', 'C', 'C', 'C', 'C '],
                   ' position ':['G', 'G', 'F', 'G', 'F', 'F', 'F', 'G', 'G', 'F', 'F'],
                   ' points ': [22, 25, 24, 39, 34, 20, 18, 17, 20, 19, 22]})

#view DataFrame
print (df)

   team position points
0 AG 22
1 AG 25
2 AF 24
3 BG 39
4 BF 34
5 BF 20
6 BF 18
7 GC 17
8 GC 20
9 CF 19
10 CF 22

Esempio 1: creare una tabella incrociata con un valore in aggfunc

Possiamo utilizzare la seguente funzione crosstab() con l’argomento aggfunc=’mean’ per creare una tabella incrociata che mostri i punti di valore medio per ogni posizione e combinazione di squadra:

 #create crosstab that displays mean points value by team and position
p.d. crosstab (index=df. team , columns=df. position , values=df. points , aggfunc=' mean ')

position F G
team		
A 24.0 23.5
B 24.0 39.0
C 20.5 18.5

Ecco come interpretare il risultato:

  • La media punti dei giocatori della squadra A nella posizione F è 24 .
  • La media dei punti dei giocatori della squadra A nella posizione G è 23,5 .

E così via.

Possiamo anche utilizzare un’altra metrica di aggregazione, come il valore massimo:

 #create crosstab that displays max points value by team and position
p.d. crosstab (index=df. team , columns=df. position , values=df. points , aggfunc=' max ')


position F G
team		
At 24 25
B 34 39
C 22 20

Ecco come interpretare il risultato:

  • Il punteggio massimo per i giocatori della squadra A nella posizione F è 24 .
  • Il punteggio massimo per i giocatori della squadra A nella posizione G è 25 .

E così via.

Esempio 2: creare una tabella incrociata con più valori in aggfunc

Possiamo utilizzare la funzione crosstab() con più valori nell’argomento aggfunc per aggregare valori di punti in base a più parametri per ciascuna posizione e combinazione di squadra:

 #create crosstab that displays min and max points by team and position
p.d. crosstab (df. team , df. position , df. points , aggfunc=[' min ', ' max ']) 

	              min max
position F G F G
team				
A 24 22 24 25
B 18 39 34 39
C 19 17 22 20

Ecco come interpretare il risultato:

  • Il valore minimo del punto per i giocatori della squadra A nella posizione F è 24 .
  • Il valore minimo del punto per i giocatori della squadra A nella posizione G è 22 .
  • Il valore massimo in punti per i giocatori della squadra A nella posizione F è 24 .
  • Il valore massimo in punti per i giocatori della squadra A nella posizione G è 25 .

E così via.

Nota : puoi trovare la documentazione completa della funzione pandas crosstab() qui .

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre attività comuni dei panda:

Panda: come creare una tabella incrociata con percentuali
Panda: come utilizzare GroupBy e conteggi dei valori
Panda: come utilizzare GroupBy con il conteggio dei contenitori

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *