Panda's: subtotalen toevoegen aan de draaitabel


Vaak wilt u misschien subtotalen toevoegen aan een Panda-draaitabel.

Gelukkig is dit eenvoudig te doen met behulp van de ingebouwde functies van Panda’s.

Het volgende voorbeeld laat zien hoe u dit doet.

Voorbeeld: Subtotalen toevoegen aan Panda’s draaitabel

Stel dat we het volgende panda’s DataFrame hebben dat informatie bevat over verschillende basketbalspelers:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' position ': ['G', 'G', 'F', 'F', 'G', 'F', 'F', 'F'],
                   ' all_star ': ['Y', 'N', 'Y', 'Y', 'N', 'N', 'N', 'Y'],
                   ' points ': [4, 4, 6, 8, 9, 5, 5, 12]})

#view DataFrame
print (df)

  team position all_star points
0 AGY 4
1 AGN 4
2 AFY 6
3 AFY 8
4 BGN 9
5 BFN 5
6 BFN 5
7 BFY 12

We kunnen de volgende code gebruiken om een draaitabel in panda’s te maken die de som van de punten weergeeft voor elke combinatie van team , all_star en position in het DataFrame:

 #create pivot table
my_table = pd. pivot_table (df, values=' points ',
                              index=[' team ', ' all_star '],
                              columns=' position ',
                              aggfunc=' sum ')

#view pivot table
print (my_table)

FG position
team all_star           
AN NaN 4.0
     Y 14.0 4.0
BN 10.0 9.0
     Y 12.0 NaN

Laten we nu zeggen dat we een rij met subtotalen willen toevoegen die de subtotaalpunten voor elk team en elke positie weergeeft.

We kunnen hiervoor de volgende syntaxis gebruiken:

 #add subtotals row to pivot table
p.d. concat ([
    y. append ( y.sum (). rename ((x, ' Total ')))
    for x, y in my_table. groupby (level= 0 )
]). append ( my_table.sum (). rename ((' Large ', ' Total ')))

	position F G
team all_star		
A N NaN 4.0
               Y 7.0 4.0
           Overall 7.0 8.0
B N 5.0 9.0
               Y 12.0 NaN
           Total 17.0 9.0
Grand Total 24.0 17.0

We hebben nu twee subtotaalrijen die het subtotaalpunten voor elk team en elke positie weergeven, evenals een eindtotaalrij die het eindtotaal voor elke kolom weergeeft.

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: hoe u een draaitabel met een aantal waarden maakt
Panda’s: hoe NaN-waarden in draaitabel te vervangen door nullen
Panda’s: Draaitabel naar DataFrame converteren

Einen Kommentar hinzufügen

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