Вы можете использовать следующий базовый синтаксис для вычисления квантилей по группам в Pandas:
df.groupby('grouping_variable'). quantile ( .5 )
В следующих примерах показано, как использовать этот синтаксис на практике.
Пример 1: Расчет квантиля по группе
Предположим, у нас есть следующие Pandas DataFrame:
import pandas as pd
#create DataFrame
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
#create DataFrame
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
Как рассчитать среднее значение столбцов в Pandas