Pandas: как использовать GroupBy с подсчетом бинов


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

#define bins
groups = df.groupby(['group_var', pd.cut (df.value_var , bins)])

#display bin count by group variable
groups. size().unstack ()

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

Пример: используйте GroupBy с количеством бинов в Pandas

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

import pandas as pd

#create DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'A', 'A', 'A', 'A',
 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B'],
 'points': [4, 7, 7, 11, 12, 15, 19, 19,
 5, 5, 11, 12, 14, 14, 15, 15]})

#view DataFrame
print(df)

 team points
0 A 4
1 A 7
2 A 7
3 A 11
4 A 12
5 A 15
6 A 19
7 A 19
8 B 5
9 B 5
10 B 11
11 B 12
12 B 14
13 B 14
14 B 15
15 B 15

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

#define groups
groups = df.groupby(['team', pd.cut (df.points , [0, 10, 15, 20])])

#display bin count grouped by team
groups. size().unstack ()

points (0, 10] (10, 15] (15, 20]
 team 
 A 3 3 2
 B 2 6 0

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

  • Всего 3 игрока команды А набрали от 0 до 10 очков.
  • В общей сложности 3 игрока команды А набрали от 10 до 15 очков.
  • В общей сложности 2 игрока команды А набрали от 15 до 20 очков.

И так далее.

Обратите внимание, что мы можем указать любые бины, которые нам нужны, в функции pd.cut() .

Например, мы могли бы определить всего два бина:

#define groups
groups = df.groupby(['team', pd.cut (df.points , [0, 10, 20])])

#display bin count grouped by team
groups. size().unstack ()

points (0, 10] (10, 20]
 team 
 A 3 5
 B 2 6

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

  • Всего 3 игрока команды А набрали от 0 до 10 очков.
  • В общей сложности 5 игроков команды А набрали от 10 до 20 очков.
  • В общей сложности 2 игрока команды B набрали от 0 до 10 очков.
  • В общей сложности 6 игроков команды B набрали от 10 до 20 очков.

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

Примечание 2 : Вы можете найти полную документацию по функции cut здесь .

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

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

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

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