Pandas: як використовувати groupby із підрахунком bin


Ви можете використовувати наступний синтаксис, щоб обчислити кількість блоків змінної, згрупованих іншою змінною в 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 гравці з команди B набрали від 0 до 10 очок.
  • Загалом 6 гравців з команди B набрали від 10 до 20 очок.

Примітка 1. Повну документацію щодо функції GroupBy можна знайти тут .

Примітка 2 : ви можете знайти повну документацію функції вирізання тут .

Додаткові ресурси

У наступних посібниках пояснюється, як виконувати інші типові операції в pandas:

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

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *