Panda: come creare una tabella pivot con percentuali


Puoi utilizzare la seguente sintassi per aggiungere una colonna a una tabella pivot in panda che visualizza la percentuale del totale per una colonna specifica:

 my_table[' % points '] = (my_table[' points ']/my_table[' points ']. sum ())* 100

Questa particolare sintassi aggiunge una nuova colonna chiamata % punti a una tabella pivot chiamata mia_tabella che visualizza la percentuale dei valori totali nella colonna punti .

L’esempio seguente mostra come utilizzare questa sintassi nella pratica.

Esempio: creare una tabella pivot Pandas con percentuali

Supponiamo di avere il seguente DataFrame panda che mostra il numero di punti segnati da diversi giocatori di basket:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' position ': ['Guard', 'Guard', 'Forward', 'Forward',
                                'Guard', 'Guard', 'Forward', 'Forward'],
                   ' points ': [22, 30, 14, 15, 19, 30, 23, 20]})

#view DataFrame
print (df)

  team position points
0 A Guard 22
1A Guard 30
2 A Forward 14
3 A Forward 15
4 B Guard 19
5 B Guard 30
6 B Forward 23
7 B Forward 20

Possiamo utilizzare la funzione pivot_table() per creare una tabella pivot che mostri la somma dei punti per squadra e posizione:

 #create pivot table to calculate sum of points by team and position
my_table = pd. pivot_table (df, index=[' team ', ' position '], aggfunc=' sum ')

#view pivot table
print (my_table)

               points
team position        
A Forward 29
     Guard 52
B Forward 43
     Guard 49

Dal risultato possiamo vedere:

  • Gli attaccanti della squadra A hanno segnato un totale di 29 punti.
  • Le guardie della squadra A hanno segnato un totale di 52 punti.
  • Gli attaccanti della squadra B hanno segnato un totale di 43 punti.
  • Le guardie della squadra B hanno segnato un totale di 49 punti.

Possiamo quindi utilizzare la seguente sintassi per aggiungere una nuova colonna denominata % punti che visualizza la percentuale dei punti totali per ogni riga:

 #add column that displays points as a percentage of total points
my_table[' % points '] = (my_table[' points ']/my_table[' points ']. sum ())* 100

#view updated pivot table
print (my_table)

               points % points
team position                   
A Forward 29 16.763006
     Guard 52 30.057803
B Forward 43 24.855491
     Guard 49 28.323699

La nuova colonna % punti ora mostra i valori dei punti come percentuale dei punti totali.

Tieni inoltre presente che puoi utilizzare la funzione round() per arrotondare i valori percentuali a un certo numero di cifre decimali.

 #add column that displays points as a percentage of total points (rounded)
my_table[' % points '] = round ((my_table[' points ']/my_table[' points ']. sum ())* 100 , 2 )

#view updated pivot table
print (my_table)

               points % points
team position                  
A Forward 29 16.76
     Guard 52 30.06
B Forward 43 24.86
     Guard 49 28.32

I valori percentuali vengono ora arrotondati alla seconda cifra decimale.

Nota : puoi trovare la documentazione completa della funzione panda pivot_table() qui .

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre operazioni comuni nei panda:

Panda: come aggiungere un filtro alla tabella pivot
Panda: come ordinare la tabella pivot in base ai valori nella colonna
Panda: come creare una tabella pivot con una somma di valori

Aggiungi un commento

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