Python Pandas - квантильный расчет вручную

Я пытаюсь вычислить квантиль для значений столбцов вручную, но не могу найти правильное значение квантиля вручную, используя формулу по сравнению с результатами, полученными от Pandas. Я искал разные решения, но не нашел правильного ответа

In [54]: df

Out[54]:
    data1   data2       key1    key2
0 -0.204708 1.393406    a       one
1 0.478943  0.092908    a       two
2 1.965781  1.246435    a       one

In [55]: grouped = df.groupby('key1')
In [56]: grouped['data1'].quantile(0.9)
Out[56]:
key1
a 1.668413

используя формулу, чтобы найти его вручную, n равно 3, так как в столбце data1 есть 3 значения

quantile(n+1)

применение значений столбца df1

=0.9(n+1) 
=0.9(4)
= 3.6

Итак, 3,6-я позиция - 1,965781, так как же Панды дают 1,666413?

1 ответ

Решение

Функция quantile назначит проценты в зависимости от диапазона ваших данных.

В твоем случае:

  • -0.204708 будет считаться 0-м процентилем,
  • 0,478943 будет считаться 50-м процентилем и
  • 1,965781 будет считаться сотым процентилем.

Таким образом, вы можете рассчитать 90-й процентиль следующим образом (используя линейную интерполяцию между 50-м и 100-м процентилем:

>>import numpy as np

>>x =np.array([-0.204708,1.965781,0.478943])
>>ninetieth_percentile = (x[1] - x[2])/0.5*0.4+x[2]
>>ninetieth_percentile    
1.6684133999999999

Обратите внимание, что значения 0,5 и 0,4 основаны на том факте, что две точки ваших данных охватывают 50% данных, а 0,4 представляет собой сумму, превышающую 50%, которые вы хотите найти (0,5+0,4 = 0,9). Надеюсь, это имеет смысл.

Другие вопросы по тегам