Як обчислити квантилі за групами в pandas


Ви можете використовувати наступний базовий синтаксис для обчислення квантилів за групами в Pandas:

 df. groupby (' grouping_variable '). quantile ( .5 )

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

Приклад 1: обчисліть квантиль за групою

Припустімо, що у нас є наступні pandas DataFrame:

 import pandas as pd

#createDataFrame 
df = pd. DataFrame ({' team ': [1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2],
                   ' score ': [3, 4, 4, 5, 5, 8, 1, 2, 2, 3, 3, 5]})

#view first five rows
df. head ()

team score
0 1 3
1 1 4
2 1 4
3 1 5
4 1 5 

У наступному коді показано, як обчислити 90-й процентиль значень у стовпці «очки», згрупованих за стовпцем «команда»:

 df. groupby (' team '). quantile ( .90 )

	score
team	
1 6.5
2 4.0

Ось як інтерпретувати результат:

  • 90-й процентиль «очок» для команди 1 становить 6,5 .
  • 90-й процентиль «очок» для команди 2 становить 4,0 .

Приклад 2: обчислення кількох квантилів на групу

Наступний код показує, як обчислити кілька квантилів одночасно для групи:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': [1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2],
                   ' score ': [3, 4, 4, 5, 5, 8, 1, 2, 2, 3, 3, 5]})

#create functions to calculate 1st and 3rd quartiles
def q1(x):
    return x. quantile ( 0.25 )

def q3(x):
    return x. quantile ( 0.75 )

#calculate 1st and 3rd quartiles by group
vals = {' score ': [q1, q3]}

df. groupby (' team '). agg (vals)

	score
        q1 q3
team		
1 4.0 5.0
2 2.0 3.0

Ось як інтерпретувати результат:

  • Перший і третій квартилі результатів команди 1 становлять 4,0 і 5,0 відповідно.
  • Перший і третій квартилі результатів команди 2 становлять 2,0 і 3,0 відповідно.

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

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

Як знайти максимальне значення для групи в Pandas
Як підрахувати групові спостереження панд
Як обчислити середнє значення стовпців у Pandas

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

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