首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python如何用描述函数计算25百分位数

Python如何用描述函数计算25百分位数
EN

Stack Overflow用户
提问于 2016-09-19 07:36:23
回答 2查看 15.5K关注 0票数 12

对于数据帧中的给定数据集,当我应用describe函数时,得到了基本的统计数据,包括最小、最大、25%、50%等。

例如:

代码语言:javascript
复制
data_1 = pd.DataFrame({'One':[4,6,8,10]},columns=['One'])
data_1.describe()

产出如下:

代码语言:javascript
复制
        One
count   4.000000
mean    7.000000
std     2.581989
min     4.000000
25%     5.500000
50%     7.000000
75%     8.500000
max     10.000000

我的问题是:计算25%的数学公式是什么?

1)据我所知,是:

代码语言:javascript
复制
formula = percentile * n (n is number of values)

在这种情况下:

代码语言:javascript
复制
25/100 * 4 = 1

第一个位置是4号,但根据描述函数,它是5.5

2)另一个例子说--如果你得到一个整数,那么取4和6的平均数--即5--仍然不符合描述给出的5.5

3)另一个教程说--你把这两个数字之间的差额乘以25% --然后加到较低的数字上:

代码语言:javascript
复制
25/100 * (6-4) = 1/4*2 = 0.5

将其添加到较低的数字:4 + 0.5 = 4.5

还是没有得到5.5

有人能澄清一下吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-19 08:07:16

熊猫文献中有关于分位数计算的信息,其中引用了numpy.percentile:

返回给定分位数的值,即la numpy.percentile。

然后,通过检查numpy.percentile 解释,我们可以看到,默认情况下,插值方法被设置为线性

线性:i+ (j - i) *分数,其中分数是指数中被i和j包围的分数部分。

对于您的特殊情况,25位数的结果是:

代码语言:javascript
复制
res_25 = 4 + (6-4)*(3/4) =  5.5

对于第75分位数,我们得到:

代码语言:javascript
复制
res_75 = 8 + (10-8)*(1/4) = 8.5

如果您将插值方法设置为“中点”,那么您将得到您想要的结果。

票数 12
EN

Stack Overflow用户

发布于 2018-01-26 01:46:39

我认为把这个计算看作是min+(max-min)*percentile.更容易理解它的结果与NumPy中描述的这个函数相同:

线性:i+ (j - i) *分数,其中分数是指数中被i和j包围的分数部分。

代码语言:javascript
复制
res_25 = 4+(10-4)*percentile = 4+(10-4)*25% = 5.5
res_75 = 4+(10-4)*percentile = 4+(10-4)*75% = 8.5
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39567712

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档