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


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

pd.pivot_table(df, values='col1', index='col2', columns='col3', aggfunc='sum')

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

Пример: создание сводной таблицы 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'],
 'points': [4, 4, 6, 8, 9, 5, 5, 12]})

#view DataFrame
print(df)


 team position points
0 A G 4
1 A G 4
2 A F 6
3 A F 8
4 B G 9
5 B F 5
6 B F 5
7 B F 12

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

#create pivot table
df_pivot = pd.pivot_table(df, values='points', index='team', columns='position',
 aggfunc='sum')

#view pivot table
print(df_pivot)

position F G
team 
A 14 8
B 22 9

Из вывода мы видим:

  • Игроки команды A на позиции F набрали в общей сложности 14 очков.
  • Игроки команды А на позиции G набрали в сумме 8 очков.
  • Игроки команды B на позиции F набрали в общей сложности 22 очка.
  • Игроки команды B на позиции G набрали в сумме 9 очков.

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

#create pivot table with margins
df_pivot = pd.pivot_table(df, values='points', index='team', columns='position',
 aggfunc='sum', margins= True , margins_name='Sum')

#view pivot table
print(df_pivot)

position F G Sum
team 
A 14 8 22
B 22 9 31
Sum 36 17 53

В сводной таблице теперь отображаются суммы строк и суммы столбцов.

Примечание.Полную документацию по функции pandas pivot_table() можно найти здесь .

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные операции в pandas:

Pandas: как изменить форму DataFrame с длинного на широкий
Pandas: как изменить форму DataFrame с широкого на длинный
Pandas: как группировать и агрегировать по нескольким столбцам

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.