Panda's: een draaitabel met percentages maken


U kunt de volgende syntaxis gebruiken om een kolom toe te voegen aan een draaitabel in panda’s, waarin het percentage van het totaal voor een specifieke kolom wordt weergegeven:

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

Deze specifieke syntaxis voegt een nieuwe kolom met de naam % punten toe aan een draaitabel genaamd my_table die het percentage van de totale waarden in de puntenkolom weergeeft.

Het volgende voorbeeld laat zien hoe u deze syntaxis in de praktijk kunt gebruiken.

Voorbeeld: Maak een Pandas-draaitabel met percentages

Stel dat we het volgende panda’s DataFrame hebben dat het aantal punten weergeeft dat door verschillende basketbalspelers is gescoord:

 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

We kunnen de functie pivot_table() gebruiken om een draaitabel te maken die de som van de punten per team en positie toont:

 #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

Uit het resultaat kunnen we zien:

  • De aanvallers van team A scoorden in totaal 29 punten.
  • De bewakers van team A scoorden in totaal 52 punten.
  • De aanvallers van team B scoorden in totaal 43 punten.
  • De bewakers van team B scoorden in totaal 49 punten.

We kunnen dan de volgende syntaxis gebruiken om een nieuwe kolom toe te voegen met de naam % punten , die het percentage van het totaal aantal punten voor elke rij weergeeft:

 #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

De nieuwe kolom % Punten geeft nu puntwaarden weer als een percentage van het totaal aantal punten.

Houd er ook rekening mee dat u de functie round() kunt gebruiken om procentuele waarden af te ronden op een bepaald aantal decimalen.

 #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

Percentagewaarden worden nu afgerond op twee decimalen.

Opmerking : u kunt hier de volledige documentatie van de pandas pivot_table() -functie vinden.

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende bewerkingen in panda’s kunt uitvoeren:

Panda’s: filter toevoegen aan draaitabel
Panda’s: draaitabel sorteren op waarden in kolom
Panda’s: hoe u een draaitabel maakt met een som van waarden

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert