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


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

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

Этот конкретный синтаксис добавляет новый столбец с именем % точек в сводную таблицу с именем my_table , которая отображает процент от общих значений в столбце точек .

В следующем примере показано, как использовать этот синтаксис на практике.

Пример: создание сводной таблицы Pandas с процентами

Предположим, у нас есть следующий DataFrame 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: как создать сводную таблицу с суммой значений

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *