Как внутренне работает функция pandas quantile ()? - PullRequest
0 голосов
/ 21 мая 2019

В этом посте:

Как панды вычисляют квартили?

Это объяснение, данное @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

...