Pandas: як створити зведену таблицю з відсотками


Ви можете використовувати наступний синтаксис, щоб додати стовпець до зведеної таблиці в pandas, яка відображає відсоток загальної суми для певного стовпця:

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

Цей конкретний синтаксис додає новий стовпець під назвою % Points до зведеної таблиці під назвою my_table , яка відображає відсоток загальних значень у стовпці Points .

У наступному прикладі показано, як використовувати цей синтаксис на практиці.

Приклад: створіть зведену таблицю Pandas із відсотками

Припустімо, що у нас є такий фрейм даних pandas, який показує кількість очок, набраних різними баскетболістами:

 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

Ми можемо використати функцію pivot_table() , щоб створити зведену таблицю, яка показуватиме суму очок за командою та позицією:

 #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

З результату ми бачимо:

  • Нападники команди А набрали 29 очок.
  • Загалом захисники команди А набрали 52 очки.
  • Нападники команди Б набрали 43 очки.
  • Гарди команди Б набрали 49 очок.

Потім ми можемо використати такий синтаксис, щоб додати новий стовпець під назвою % балів , який відображає відсоток загальної кількості балів для кожного рядка:

 #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

Новий стовпець % балів тепер відображає значення балів у відсотках від загальної кількості балів.

Також зауважте, що ви можете використовувати функцію round() , щоб округлити відсоткові значення до певної кількості знаків після коми.

 #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

Відсоткові значення тепер округлюються до двох знаків після коми.

Примітка . Ви можете знайти повну документацію щодо функції pandas pivot_table() тут .

Додаткові ресурси

У наступних посібниках пояснюється, як виконувати інші типові операції в pandas:

Pandas: Як додати фільтр до зведеної таблиці
Pandas: Як сортувати зведену таблицю за значеннями в стовпці
Pandas: Як створити зведену таблицю із сумою значень

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *