Pandas: как использовать группу по с условием «где»


Самый простой способ использовать group by с условием Where в pandas — использовать функцию query() :

 df. query (" team == 'A' "). groupby ([" position "])[" points "]. mean (). reset_index ()

В этом конкретном примере вычисляется среднее значение очков , сгруппированных по позиции , где команда равна «А» в некоторых DataFrame панд.

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

Пример: как использовать Group By с условием Where в Pandas

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

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B'],
                   ' position ': ['G', 'G', 'F', 'F', 'F', 'G', 'G', 'F'],
                   ' points ': [22, 14, 15, 10, 8, 29, 33, 18]})

#view DataFrame
print (df)

  team position points
0 AG 22
1 AG 14
2 AF15
3 AF 10
4 AF 8
5 BG 29
6 BG 33
7 BF 18

Мы можем использовать следующий код для расчета среднего значения очков , сгруппированного по позиции , где команда равна «А»:

 #calculate mean value of points, grouped by position, where team == 'A'
df. query (" team == 'A' "). groupby ([" position "])[" points "]. mean (). reset_index ()

        position points
0 F 11.0
1G 18.0

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

  • Среднее количество очков для игроков на позиции «F» в команде А составляет 11 .
  • Среднее значение очков для игроков на позиции «G» Команды А составляет 18 .

Обратите внимание, что мы также можем использовать оператор & в функции query() для поиска строк, в которых выполняется несколько условий.

Например, следующий код показывает, как вычислить среднее значение очков , сгруппированное по позиции , где команда равна «A» , а позиция равна «G»:

 #calculate mean value of points by position where team is 'A' and position is 'G'
df. query (" team=='A' & position=='G' "). groupby ([" position "])[" points "]. mean (). reset_index ()

	position points
0G 18.0

Из результата мы видим, что среднее значение очков для игроков на позиции «G» в команде А равно 18 .

Поскольку мы указали два условия в функции query() , использовались только те строки, которые удовлетворяли обоим условиям.

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

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

Как выполнить сумму GroupBy в Pandas
Как использовать Groupby и Plot в Pandas
Как посчитать уникальные значения с помощью GroupBy в Pandas

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

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