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