Panda: come creare una tabella incrociata con percentuali


Puoi utilizzare l’argomento normalize nella funzione pandas crosstab() per creare una tabella a campi incrociati che visualizzi valori percentuali anziché numeri:

 p.d. crosstab (df. col1 , df. col2 , normalize=' index ')

L’argomento normalizzazione accetta tre diversi argomenti:

  • all : mostra la percentuale relativa a tutti i valori.
  • indice : mostra la percentuale come totale dei valori di riga.
  • Colonne : visualizza la percentuale come totale dei valori delle colonne.

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

Ecco come apparirebbe la tabella incrociata predefinita per il numero di giocatori per squadra e posizione:

 #create crosstab that displays count by team and position
p.d. crosstab (df. team , df. position )

position F G
team		
AT 12
B 3 1
C 2 2

Esempio 1: creare una tabella incrociata con percentuali relative a tutti i valori

Possiamo utilizzare la funzione crosstab() con l’argomento normalize=all per creare una tabella a campi incrociati che visualizza le percentuali di ciascun valore rispetto al numero totale di tutti i valori:

 #create crosstab that displays counts as percentage relative to total count
p.d. crosstab (df. team , df. position , normalize=' all ')

position F G
team		
A 0.090909 0.181818
B 0.272727 0.090909
C 0.181818 0.181818

Ecco come interpretare il risultato:

  • I giocatori della squadra A nella posizione F rappresentano il 9,09% del totale dei giocatori.
  • I giocatori della squadra A in posizione G rappresentano il 18,18% del totale dei giocatori.

E così via.

Esempio 2: creare una tabella a campi incrociati con le percentuali rispetto ai totali delle righe

Possiamo utilizzare la funzione crosstab() con l’argomento normalize=index per creare una tabella a campi incrociati che visualizza le percentuali di ciascun valore rispetto al totale della riga:

 #create crosstab that displays counts as percentage relative to row totals
p.d. crosstab (df. team , df. position , normalize=' index ')

position F G
team		
A 0.333333 0.666667
B 0.750000 0.250000
C 0.500000 0.500000

Ecco come interpretare il risultato:

  • I giocatori in posizione F rappresentano il 33,33% del totale dei giocatori della squadra A.
  • I giocatori nella posizione F rappresentano il 75% del totale dei giocatori della squadra B.
  • I giocatori nella posizione F rappresentano il 50% del totale dei giocatori della squadra C.

E così via.

Esempio 3: creare una tabella a campi incrociati con le percentuali rispetto ai totali delle colonne

Possiamo utilizzare la funzione crosstab() con l’argomento normalize=columns per creare una tabella a campi incrociati che visualizza le percentuali di ciascun valore rispetto al totale della colonna:

 #create crosstab that displays counts as percentage relative to column totals
p.d. crosstab (df. team , df. position , normalize=' columns ')

position F G
team		
A 0.166667 0.4
B 0.500000 0.2
C 0.333333 0.4

Ecco come interpretare il risultato:

  • I giocatori della squadra A rappresentano il 16,67% del totale dei giocatori con ruolo F.
  • I giocatori della squadra B rappresentano il 50% del totale dei giocatori con una posizione F.
  • I giocatori della squadra C rappresentano il 33,33% del totale dei giocatori con ruolo F.

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 nei panda:

Panda: come utilizzare GroupBy e conteggi dei valori
Panda: come utilizzare GroupBy con il conteggio dei contenitori
Panda: come contare i valori in una colonna con condizione

Aggiungi un commento

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