Як підрахувати групові спостереження панд


Часто вам може бути цікаво підрахувати кількість спостережень на групу в 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

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *