Вы можете использовать следующий базовый синтаксис для вычисления совокупного процента значений в столбце кадра данных pandas:
#calculate cumulative sum of column
df['cum_sum'] = df['col1']. cumsum ()
#calculate cumulative percentage of column (rounded to 2 decimal places)
df['cum_percent'] = round( 100 \*df.cum_sum /df['col1']. sum (), 2 )
В следующем примере показано, как использовать этот синтаксис на практике.
Пример: вычислить совокупный процент в Pandas
Предположим, у нас есть следующий кадр данных pandas, который показывает количество единиц, которые компания продает в течение последовательных лет:
import pandas as pd
#create DataFrame
df = pd.DataFrame({'year': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'units_sold': [60, 75, 77, 87, 104, 134, 120, 125, 140, 150]})
#view DataFrame
print(df)
year units_sold
0 1 60
1 2 75
2 3 77
3 4 87
4 5 104
5 6 134
6 7 120
7 8 125
8 9 140
9 10 150
Затем мы можем использовать следующий код, чтобы добавить столбец, показывающий совокупное количество проданных единиц и совокупный процент проданных единиц:
#calculate cumulative sum of units sold
df['cum_sum'] = df['units_sold']. cumsum ()
#calculate cumulative percentage of units sold
df['cum_percent'] = round( 100 \*df.cum_sum /df['units_sold']. sum (), 2 )
#view updated DataFrame
print(df)
year units_sold cum_sum cum_percent
0 1 60 60 5.60
1 2 75 135 12.59
2 3 77 212 19.78
3 4 87 299 27.89
4 5 104 403 37.59
5 6 134 537 50.09
6 7 120 657 61.29
7 8 125 782 72.95
8 9 140 922 86.01
9 10 150 1072 100.00
Мы интерпретируем кумулятивные проценты следующим образом:
- 5,60% всех продаж были сделаны в первый год.
- 12,59% всех продаж пришлось на 1-й и 2-й годы вместе взятые.
- 19,78% всех продаж пришлось на первый, второй и третий годы вместе взятые.
И так далее.
Обратите внимание, что вы можете просто изменить значение в функции round() , чтобы также изменить количество отображаемых десятичных знаков.
Например, вместо этого мы могли бы округлить совокупный процент до нуля знаков после запятой:
#calculate cumulative sum of units sold
df['cum_sum'] = df['units_sold']. cumsum ()
#calculate cumulative percentage of units sold
df['cum_percent'] = round( 100 \*df.cum_sum /df['units_sold']. sum (), 0 )
#view updated DataFrame
print(df)
year units_sold cum_sum cum_percent
0 1 60 60 6.0
1 2 75 135 13.0
2 3 77 212 20.0
3 4 87 299 28.0
4 5 104 403 38.0
5 6 134 537 50.0
6 7 120 657 61.0
7 8 125 782 73.0
8 9 140 922 86.0
9 10 150 1072 100.0
Совокупные проценты теперь округляются до нуля знаков после запятой.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные операции в Python:
Как создать частотные таблицы в Python
Как рассчитать относительную частоту в Python