对于数据帧中的给定数据集,当我应用describe函数时,得到了基本的统计数据,包括最小、最大、25%、50%等。
例如:
data_1 = pd.DataFrame({'One':[4,6,8,10]},columns=['One'])
data_1.describe()产出如下:
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)据我所知,是:
formula = percentile * n (n is number of values)在这种情况下:
25/100 * 4 = 1第一个位置是4号,但根据描述函数,它是5.5。
2)另一个例子说--如果你得到一个整数,那么取4和6的平均数--即5--仍然不符合描述给出的5.5。
3)另一个教程说--你把这两个数字之间的差额乘以25% --然后加到较低的数字上:
25/100 * (6-4) = 1/4*2 = 0.5将其添加到较低的数字:4 + 0.5 = 4.5
还是没有得到5.5。
有人能澄清一下吗?
发布于 2016-09-19 08:07:16
在熊猫文献中有关于分位数计算的信息,其中引用了numpy.percentile:
返回给定分位数的值,即la numpy.percentile。
然后,通过检查numpy.percentile 解释,我们可以看到,默认情况下,插值方法被设置为线性:
线性:i+ (j - i) *分数,其中分数是指数中被i和j包围的分数部分。
对于您的特殊情况,25位数的结果是:
res_25 = 4 + (6-4)*(3/4) = 5.5对于第75分位数,我们得到:
res_75 = 8 + (10-8)*(1/4) = 8.5如果您将插值方法设置为“中点”,那么您将得到您想要的结果。
。
发布于 2018-01-26 01:46:39
我认为把这个计算看作是min+(max-min)*percentile.更容易理解它的结果与NumPy中描述的这个函数相同:
线性:i+ (j - i) *分数,其中分数是指数中被i和j包围的分数部分。
res_25 = 4+(10-4)*percentile = 4+(10-4)*25% = 5.5
res_75 = 4+(10-4)*percentile = 4+(10-4)*75% = 8.5https://stackoverflow.com/questions/39567712
复制相似问题