Как подсчитать групповые наблюдения у панд


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

К счастью, это легко сделать с помощью функций groupby() и size() со следующим синтаксисом:

 df. groupby (' column_name '). size ()

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

 import numpy as np
import pandas as pd

#create pandas DataFrame
df = pd. DataFrame ({'team': ['A', 'A', 'B', 'B', 'B', 'C', 'C'],
                   'division':['E', 'W', 'E', 'E', 'W', 'W', 'E'],
                   'rebounds': [11, 8, 7, 6, 6, 5, 12]})

#display DataFrame
print (df)

  team division rebounds
0 AE 11
1 AW 8
2 BE 7
3 BE 6
4 BW 6
5 CW 5
6 CE 12

Пример 1: подсчет по переменной

Следующий код показывает, как подсчитать общее количество наблюдений на команду:

 #count total observations by variable 'team'
df. groupby (' team '). size ()

team
At 2
B 3
C 2
dtype: int64

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

  • Команда А имеет 2 наблюдения
  • Команда Б имеет 3 наблюдения
  • Команда C имеет 2 наблюдения

Обратите внимание, что предыдущий код создает серию. В большинстве случаев мы хотим работать с DataFrame, поэтому вместо этого мы можем использовать функцию reset_index() для создания DataFrame:

 df. groupby (' team '). size (). reset_index (name=' obs ')

        team obs
0 to 2
1 B 3
2 C 2

Пример 2: подсчет и сортировка по переменной

Мы также можем использовать функцию sort_values() для сортировки количества групп.

Мы можем указать возрастание=False для сортировки количества групп от наибольшего к наименьшему или возрастание=True для сортировки от наименьшего к наибольшему:

 df. groupby (' team '). size (). reset_index (name=' obs '). sort_values ([' obs '], ascending= True )

        team obs
0 to 2
2 C 2
1 B 3

Пример 3: Счет по нескольким переменным

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

 #count observations grouped by team and division
df. groupby ([' team ',' division ']). size (). reset_index (name=' obs ')

        team division obs
0 A E 1
1 A W 1
2 B E 2
3 B W 1
4 C E 1
5 C W 1

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

  • 1 наблюдение принадлежит команде А и дивизиону Е
  • 1 наблюдение принадлежит команде А и дивизиону W
  • 2 наблюдения принадлежат команде B и дивизиону E
  • 1 наблюдение принадлежит команде B и дивизиону W
  • 1 наблюдение принадлежит команде C и дивизиону E
  • 1 наблюдение принадлежит команде C и дивизиону W

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

Как посчитать сумму столбцов в Pandas
Как рассчитать среднее значение столбцов в Pandas
Как найти максимальное значение столбцов в Pandas

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

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