Вы можете использовать следующий синтаксис для расчета процента от общего числа внутри групп в pandas:
df['values_var'] / df.groupby('group_var')['values_var']. transform('sum')
В следующем примере показано, как использовать этот синтаксис на практике.
Пример. Вычисление процента от общего числа внутри группы
Предположим, у нас есть следующий кадр данных pandas, который показывает очки, набранные баскетболистами в разных командах:
import pandas as pd
#create DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B'],
'points': [12, 29, 34, 14, 10, 11, 7, 36, 34, 22]})
#view DataFrame
print(df)
team points
0 A 12
1 A 29
2 A 34
3 A 14
4 A 10
5 B 11
6 B 7
7 B 36
8 B 34
9 B 22
Мы можем использовать следующий синтаксис для создания нового столбца в DataFrame, который показывает процент от общего количества набранных очков, сгруппированных по командам:
#calculate percentage of total points scored grouped by team
df['team_percent'] = df['points'] / df.groupby('team')['points']. transform('sum')
#view updated DataFrame
print(df)
team points team_percent
0 A 12 0.121212
1 A 29 0.292929
2 A 34 0.343434
3 A 14 0.141414
4 A 10 0.101010
5 B 11 0.100000
6 B 7 0.063636
7 B 36 0.327273
8 B 34 0.309091
9 B 22 0.200000
Столбец team_percent показывает процент от общего количества очков, набранных этим игроком в своей команде.
Например, игроки команды А набрали в сумме 99 очков.
Таким образом, игрок в первой строке DataFrame, набравший 12 очков, набрал в сумме 12/99 = 12,12% от общего количества очков для команды A.
Точно так же игрок во второй строке DataFrame, набравший 29 очков, набрал в общей сложности 29/99 = 29,29% от общего количества очков для команды A.
И так далее.
Примечание.Полную документацию по функции GroupBy можно найти здесь .
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные операции в pandas:
Pandas: как рассчитать совокупную сумму по группе
Pandas: как подсчитать уникальные значения по группам
Pandas: как рассчитать режим по группе
Pandas: как рассчитать корреляцию по группе