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). Надеюсь, это имеет смысл.