Как выполнить GroupBy Sum в Pandas (с примерами)


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

df.groupby(['group1',' group2'])['sum_col']. sum().reset_index()

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

import pandas as pd

#create DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
 'position': ['G', 'G', 'F', 'C', 'G', 'F', 'F', 'C'],
 'points': [25, 17, 14, 9, 12, 9, 6, 4],
 'rebounds': [11, 8, 10, 6, 6, 5, 9, 12]})

#view DataFrame
df

 team position points rebounds
0 A G 25 11
1 A G 17 8
2 A F 14 10
3 A C 9 6
4 B G 12 6
5 B F 9 5
6 B F 6 9
7 B C 4 12

Пример 1: группировка по одному столбцу, суммирование по одному столбцу

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

#group by team and sum the points
df.groupby(['team'])['points']. sum().reset_index()

 team points
0 A 65
1 B 31

Из вывода мы видим, что:

  • Игроки команды А набрали в сумме 65 очков.
  • Игроки команды В набрали в сумме 31 очко.

Пример 2: группировка по нескольким столбцам, суммирование нескольких столбцов

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

#group by team and position, sum points and rebounds
df.groupby(['team', 'position'])['points', 'rebounds']. sum().reset_index()

 team position points rebounds
0 A C 9 6
1 A F 14 10
2 A G 42 19
3 B C 4 12
4 B F 15 14
5 B G 12 6

Из вывода мы видим, что:

  • Игроки команды А на позиции «С» набрали в сумме 9 очков и 6 подборов.
  • Игроки команды А на позиции «F» набрали в сумме 14 очков и 10 подборов.
  • Игроки команды А в позиции «G» набрали в сумме 42 очка и 19 подборов.

И так далее.

Обратите внимание, что функция reset_index() не позволяет сгруппированным столбцам стать частью индекса.

Например, вот как выглядит вывод, если мы его не используем:

#group by team and position, sum points and rebounds
df.groupby(['team', 'position'])['points', 'rebounds']. sum ()

 points rebounds
team position 
A C 9 6
F 14 10
G 42 19
B C 4 12
F 15 14
G 12 6

В зависимости от того, как вы хотите, чтобы результаты отображались, вы можете использовать или не использовать функцию reset_index() .

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

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

Как подсчитать наблюдения по группе в Pandas
Как найти максимальное значение по группе в Pandas
Как рассчитать квантили по группам в Pandas

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