Pandas: как использовать groupby и считать по условию


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

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

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

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

Пример: группировка и подсчет с условием в Pandas

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

 import pandas as pd

#createDataFrame
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 по переменной команды и подсчитать количество строк, в которых переменная 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 to 1
1 B 2

По результату мы видим:

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

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

Например, следующий код показывает, как выполнить группировку по переменной команды и подсчитать количество строк, в которых переменная точек больше 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 to 3
1 B 2

По результату мы видим:

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

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

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

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

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

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

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