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

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

 import pandas as pd

#createDataFrame
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 to 4
1 to 7
2 to 7
3 to 11
4 to 12
5 to 15
6 to 19
7 to 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		
     At 3 5
     B 2 6

Вот как интерпретировать результат:

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

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

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

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

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

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

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

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