Вы можете использовать следующий синтаксис для вычисления количества ячеек одной переменной, сгруппированной по другой переменной в 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: как рассчитать корреляцию по группе