В тази публикация:
Как pandas изчислява квартили?
Това е обяснението, дадено от @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
Може ли някой да обясни, моля? Ще бъда много благодарен.
Благодаря предварително.
Винеет