Как подсчитать групповые наблюдения у панд
Часто вас может заинтересовать подсчет количества наблюдений на группу в 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