Pandy: jak utworzyć tabelę przestawną z wartościami procentowymi


Możesz użyć następującej składni, aby dodać kolumnę do tabeli przestawnej w pandach, która wyświetla procent sumy dla określonej kolumny:

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

Ta szczególna składnia dodaje nową kolumnę o nazwie punkty procentowe do tabeli przestawnej o nazwie moja_tabela , która wyświetla procent wszystkich wartości w kolumnie punktów .

Poniższy przykład pokazuje, jak zastosować tę składnię w praktyce.

Przykład: utwórz tabelę przestawną Pandy z wartościami procentowymi

Załóżmy, że mamy następującą ramkę danych pandy, która pokazuje liczbę punktów zdobytych przez różnych koszykarzy:

 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

Możemy użyć funkcji przestawnej() , aby utworzyć tabelę przestawną, która pokazuje sumę punktów według drużyny i pozycji:

 #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

Z wyniku możemy zobaczyć:

  • Napastnicy Drużyny A zdobyli łącznie 29 punktów.
  • Obrońcy drużyny A zdobyli łącznie 52 punkty.
  • Łącznie napastnicy Drużyny B zdobyli 43 punkty.
  • Obrońcy Drużyny B zdobyli łącznie 49 punktów.

Następnie możemy użyć następującej składni, aby dodać nową kolumnę o nazwie punkty procentowe , która wyświetla procent wszystkich punktów w każdym wierszu:

 #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

Nowa kolumna Punkty % wyświetla teraz wartości punktowe jako procent wszystkich punktów.

Pamiętaj też, że możesz użyć funkcji round() do zaokrąglenia wartości procentowych do określonej liczby miejsc po przecinku.

 #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

Wartości procentowe są teraz zaokrąglane do dwóch miejsc po przecinku.

Uwaga : pełną dokumentację funkcji obrotowej pandy() można znaleźć tutaj .

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe operacje na pandach:

Pandy: Jak dodać filtr do tabeli przestawnej
Pandy: Jak sortować tabelę przestawną według wartości w kolumnie
Pandy: Jak utworzyć tabelę przestawną z sumą wartości

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *