Часто вам может понадобиться добавить промежуточные итоги в сводную таблицу панд.
К счастью, это легко сделать с помощью встроенных функций в pandas.
В следующем примере показано, как это сделать.
Пример: добавление промежуточных итогов в сводную таблицу Pandas
Предположим, у нас есть следующий кадр данных pandas, который содержит информацию о различных баскетболистах:
import pandas as pd
#create DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
'position': ['G', 'G', 'F', 'F', 'G', 'F', 'F', 'F'],
'all_star': ['Y', 'N', 'Y', 'Y', 'N', 'N', 'N', 'Y'],
'points': [4, 4, 6, 8, 9, 5, 5, 12]})
#view DataFrame
print(df)
team position all_star points
0 A G Y 4
1 A G N 4
2 A F Y 6
3 A F Y 8
4 B G N 9
5 B F N 5
6 B F N 5
7 B F Y 12
Мы можем использовать следующий код для создания сводной таблицы в pandas, которая показывает сумму баллов для каждой комбинации team , all_star и position в DataFrame:
#create pivot table
my_table = pd.pivot_table(df, values='points',
index=['team', 'all_star'],
columns='position',
aggfunc='sum')
#view pivot table
print(my_table)
position F G
team all_star
A N NaN 4.0
Y 14.0 4.0
B N 10.0 9.0
Y 12.0 NaN
Теперь предположим, что мы хотим добавить строку промежуточных итогов, которая показывает промежуточную сумму очков для каждой команды и позиции.
Для этого мы можем использовать следующий синтаксис:
#add subtotals row to pivot table
pd.concat([
y.append(y. sum().rename ((x, 'Total')))
for x, y in my_table.groupby (level= 0 )
]).append(my_table.sum().rename (('Grand', 'Total')))
position F G
team all_star
A N NaN 4.0
Y 7.0 4.0
Total 7.0 8.0
B N 5.0 9.0
Y 12.0 NaN
Total 17.0 9.0
Grand Total 24.0 17.0
Теперь у нас есть две строки промежуточных итогов, которые показывают промежуточные суммы очков для каждой команды и позиции, а также строка общей суммы, которая показывает общую сумму каждого столбца.
Примечание.Полную документацию по функции pandas pivot_table() можно найти здесь .
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные операции в pandas:
Pandas: как создать сводную таблицу с подсчетом значений
Pandas: как заменить значения NaN в сводной таблице нулями
Pandas: как преобразовать сводную таблицу в DataFrame