Pandas: как использовать Groupby и Count с условием


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

df.groupby('var1')['var2'].apply ( lambda x: (x=='val'). sum ()). reset_index(name='count')

Этот конкретный синтаксис группирует строки DataFrame на основе var1 , а затем подсчитывает количество строк, в которых var2 равно «val».

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

Пример: Groupby и Count с условием в Pandas

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

import pandas as pd

#create DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
 'pos': ['Gu', 'Fo', 'Fo', 'Fo', 'Gu', 'Gu', 'Fo', 'Fo'],
 'points': [18, 22, 19, 14, 14, 11, 20, 28]})

#view DataFrame
print(df)

 team pos points
0 A Gu 18
1 A Fo 22
2 A Fo 19
3 A Fo 14
4 B Gu 14
5 B Gu 11
6 B Fo 20
7 B Fo 28

В следующем коде показано, как сгруппировать DataFrame по переменной team и подсчитать количество строк, в которых переменная pos равна 'Gu':

#groupby team and count number of 'pos' equal to 'Gu'
df_count = df.groupby('team')['pos'].apply ( lambda x: (x=='Gu'). sum ()). reset_index(name='count')

#view results
print(df_count)

 team count
0 A 1
1 B 2

Из вывода мы видим:

  • У команды А есть 1 строка, в которой столбец pos равен «Gu».
  • У команды Б есть 2 строки, в которых столбец pos равен «Gu».

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

Например, следующий код показывает, как выполнить группировку по переменной team и подсчитать количество строк, в которых значение переменной points больше 15:

#groupby team and count number of 'points' greater than 15
df_count = df.groupby('team')['points'].apply ( lambda x: (x>15). sum ()). reset_index(name='count')

#view results
print(df_count)

 team count
0 A 3
1 B 2

Из вывода мы видим:

  • У команды А есть 3 строки, в которых столбец очков больше 15.
  • У команды Б есть 2 строки, в которых столбец с очками больше 15.

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

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

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

Как подсчитать уникальные значения с помощью Pandas GroupBy
Как применить функцию к Pandas Groupby
Как создать гистограмму из Pandas GroupBy

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