Pandas: как рассчитать режим в объекте GroupBy


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

df.groupby(['group_var'])['value_var']. agg(pd.Series.mode )

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

Пример: режим расчета в объекте GroupBy

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

import pandas as pd

#create DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'B', 'B', 'C', 'C', 'C'],
 'points': [10, 10, 12, 15, 19, 23, 20, 20, 26]})

#view DataFrame
print(df)

 team points
0 A 10
1 A 10
2 A 12
3 A 15
4 B 19
5 B 23
6 C 20
7 C 20
8 C 26

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

#calculate mode points value for each team
df.groupby(['team'])['points']. agg(pd.Series.mode )

team
A 10
B [19, 23]
C 20
Name: points, dtype: object

Вот как интерпретировать вывод:

  • Значение очков режима для команды А равно 10 .
  • Значения очков моды для команды B равны 19 и 23 .
  • Значение очков режима для команды C равно 20 .

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

#calculate mode points value for each team
df.groupby(['team'])['points'].apply (pd.Series.mode )

team 
A 0 10
B 0 19
 1 23
C 0 20
Name: points, dtype: int64

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

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

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

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