Як підрахувати групові спостереження панд
Часто вам може бути цікаво підрахувати кількість спостережень на групу в pandas DataFrame.
На щастя, це легко зробити за допомогою функцій 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 спостереження
- Команда С має 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() для сортування кількості груп.
Ми можемо вказати ascending=False для сортування кількості груп від найбільшої до найменшої або ascending=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: Підрахунок за кількома змінними
Ми також можемо підрахувати кількість спостережень, згрупованих за кількома змінними у pandas DataFrame:
#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 спостереження належить команді A та дивізіону E
- 1 спостереження належить команді A та дивізіону W
- 2 спостереження належать команді B і дивізіону E
- 1 спостереження належить команді B і дивізіону W
- 1 спостереження належить команді C і дивізіону E
- 1 спостереження належить команді C і дивізіону W
Додаткові ресурси
Як обчислити суму стовпців у Pandas
Як обчислити середнє значення стовпців у Pandas
Як знайти максимальне значення стовпців у Pandas