gpt4 book ai didi

python - pandas quantile( ) 函数在内部是如何工作的?

转载 作者:行者123 更新时间:2023-12-05 07:23:04 24 4
gpt4 key购买 nike

在这篇文章中:

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、fraction = 0.5 和 i + (j - i) * fraction = 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 <= 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

索引条件:

  • 如果索引的小数部分如 0.25 < 0.50,则 index = floor(index)
  • 如果索引小数部分 > 0.50,则 index = ceil(index)
  • 如果索引小数部分== 0.50,则值= int(index)+0.5

关于python - pandas quantile( ) 函数在内部是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56244887/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com