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