В этом посте:
Как панды вычисляют квартили?
Это объяснение, данное @perl в отношении работы функции quantile ():
df = pd.DataFrame([5,7,10,15,19,21,21,22,22,23,23,23,23,23,24,24,24,24,25], columns=['val'])
Давайте рассмотрим 0,25 (конечно, та же логика с 0,75): номер элемента должен быть (len(df)-1)*0.25 = (19 - 1)*0.25 = 4.5
, поэтому мы находимся между элементом 4 (который равен 19 - мы начинаем считать с 0) и элементом 5(что 21).Итак, мы имеем i = 19, j = 21, дробь = 0,5 и i + (j - i) * дробь = 20
Я до сих пор не могу понять, как работает функция quantile ().
Все формулы для квантилей предполагают, что мы должны взять q * (n + 1), где q - квантиль, который нужно вычислить.Однако в объяснении @perl используется формула q * (n-1).Почему (n-1) вместо (n + 1)?
Во-вторых, почему фракция 0.5 используется @perl?
Есть ли разница в методе вычисления квантиля,если общее количество точек данных четное или нечетное? *
, если мы берем два кадра данных:
df1 = pd.DataFrame([2,4,6,8,10,12]) # n=6 (even)
df2 = pd.DataFrame([1,3,5,7,9]) # n=5 (odd)
их соответствующие квантили такие же, как на (см. рисунок) квантильной диаграмме:
Я не могу выяснить, как рассчитываются квантили в двух вышеупомянутых случаях.
q -> df1 -> df2
0.2 -> 4.0 -> 2.6
0,25 -> 4,5 -> 3,0
0,5 -> 7,0 -> 5,0
0,75 -> 9,5 -> 7,0
0,8 -> 10,0 ->7.4
Может кто-нибудь объяснить, пожалуйста?Буду очень благодарен.
Заранее спасибо.
Vineet