在这篇文章中:
How does pandas calculate quartiles?
这是@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)?
第二,为什么@perl使用0.5的分数?
如果总数据点是偶数还是奇数,分位数计算方法是否有差异?*
如果我们采用两个数据帧:
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
有人可以解释吗?我将非常感谢。
谢谢。
门廊
答案 0 :(得分:0)
我不确定,但是您可以尝试一下。
0 <= q <= 1
df = pd.DataFrame([1,3,5,7,9], columns=['val'])
df.quantile(0.25)
output: val 3.0
解释:n = 5,q = 0.25。因为我使用q = 0.25,所以我们可以使用index = n/4 = 1.25
Condition for index: