Как рассчитать квантили по группе в 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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *