Як застосувати функцію до pandas groupby


Ви можете використовувати наступний базовий синтаксис, щоб використовувати функції groupby() і apply() разом у pandas DataFrame:

 df. groupby (' var1 '). apply ( lambda x: some function)

Наступні приклади показують, як використовувати цей синтаксис на практиці з наступними pandas DataFrame:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' points_for ': [18, 22, 19, 14, 11, 20, 28],
                   ' points_against ': [14, 21, 19, 14, 12, 20, 21]})

#view DataFrame
print (df)

  team points_for points_against
0 to 18 14
1 To 22 21
2 A 19 19
3 B 14 14
4 B 11 12
5 B 20 20
6 B 28 21

Приклад 1: використовуйте groupby() і apply(), щоб знайти відносні частоти

Наступний код показує, як використовувати функції groupby( ) і apply() для пошуку відносних частот назви кожної команди в pandas DataFrame:

 #find relative frequency of each team name in DataFrame
df. groupby (' team '). apply ( lambda x:x[' team ']. count ()/ df.shape [0])

team
A 0.428571
B 0.571429
dtype:float64

З результату ми бачимо, що команда A з’являється в 42,85% усіх рядків, а команда B – у 57,14% усіх рядків.

Приклад 2: використовуйте groupby() і apply(), щоб знайти максимальні значення

Наступний код показує, як використовувати функції groupby( ) і apply() , щоб знайти максимальні значення «points_for» для кожної команди:

 #find max "points_for" values for each team
df. groupby (' team '). apply ( lambda x:x[' points_for ']. max ())

team
At 22
B28
dtype: int64

З результату ми бачимо, що максимальна кількість балів, набрана командою А, становить 22, а максимальна кількість балів, набрана командою Б, – 28.

Приклад 3. Використовуйте groupby() і apply() для виконання спеціального обчислення

Наступний код показує, як використовувати функції groupby( ) і apply() , щоб знайти середню різницю між «points_for» і «points_against» для кожної команди:

 #find max "points_for" values for each team
df. groupby (' team '). apply ( lambda x: (x[' points_for '] - x[' points_against ']). mean ())

team
A 1.666667
B 1.500000
dtype:float64

З результатів ми бачимо, що середня різниця між «очками за» та «очками проти» становить 1,67 для команди A та 1,50 для команди B.

Додаткові ресурси

У наступних посібниках пояснюється, як виконувати інші типові операції в pandas:

Як виконати суму GroupBy у Pandas
Як використовувати Groupby та Plot у Pandas
Як підрахувати унікальні значення за допомогою GroupBy в Pandas

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

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