Pandas: как сгруппировать два столбца и агрегировать


Вы можете использовать следующий базовый синтаксис с функцией groupby() в pandas для группировки по двум столбцам и объединения еще одного столбца:

 df. groupby ([' var1 ',' var2 '])[' var3 ']. mean ()

В этом конкретном примере DataFrame группируется по столбцам var1 и var2 , а затем вычисляется среднее значение столбца var3 .

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

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B'],
                   ' position ': ['G', 'G', 'F', 'F', 'F', 'G', 'G', 'G', 'G', 'F'],
                   ' points ': [15, 22, 24, 25, 20, 35, 34, 19, 14, 12]})

#view DataFrame
print (df)

  team position points
0 AG 15
1 AG 22
2 AF 24
3 AF 25
4 AF 20
5 BG 35
6 BG 34
7 BG 19
8 BG 14
9 BF 12

Пример 1. Сгруппируйте два столбца и вычислите среднее значение другого столбца.

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

 #calculate mean of points grouped by team and position columns
df. groupby ([' team ', ' position '])[' points ']. mean ()

team position
AF23.0
      G 18.5
BF 12.0
      G 25.5
Name: points, dtype: float64

По результату мы видим:

  • Среднее количество очков игроков команды А на позиции F составляет 23 .
  • Среднее количество очков игроков команды А на позиции G составляет 18,5 .

И так далее.

Пример 2. Сгруппируйте два столбца и вычислите максимум другого столбца.

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

 #calculate max of points grouped by team and position columns
df. groupby ([' team ', ' position '])[' points ']. max ()

team position
AF25
      G22
BF 12
      G 35
Name: points, dtype: int64

По результату мы видим:

  • Максимальное количество очков для игроков команды А на позиции F составляет 25 .
  • Максимальное количество очков для игроков команды А на позиции G составляет 22 .

И так далее.

Пример 3. Группировка по двум столбцам и подсчет вхождений.

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

 #count occurrences of each combination of team and position columns
df. groupby ([' team ', ' position ']). size ()

team position
AF3
      G2
BF 1
      G4
dtype: int64

По результату мы видим:

  • В команде А на позиции F находятся 3 игрока.
  • В команде А на позиции G находятся 2 игрока.

И так далее.

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

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

Как посчитать уникальные значения с помощью Pandas GroupBy
Как применить функцию к Pandas Groupby
Как создать гистограмму из Pandas GroupBy

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *