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