Python Pandas - describe 函数如何计算 25 个百分位数
Python Pandas - how is 25 percentile calculated by describe function
对于数据框中的给定数据集,当我应用 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 但根据 describe 函数它是 5.5
。
2) 另一个例子说 - 如果你得到一个整数,然后取 4 和 6 的平均值 - 即 5 - 仍然不匹配描述给出的 5.5
。
3) 另一个教程说 - 你取 2 个数字之间的差 - 乘以 25% 并加上较小的数字:
25/100 * (6-4) = 1/4*2 = 0.5
将其添加到较小的数字:4 + 0.5 = 4.5
仍然没有得到 5.5
。
有人可以澄清一下吗?
在pandas documentation中有关于分位数计算的信息,其中引用了numpy.percentile:
Return value at the given quantile, a la numpy.percentile.
然后,检查numpy.percentile explanation,我们可以看到插值方法默认设置为线性:
linear: i + (j - i) * fraction, where fraction is the fractional part
of the index surrounded by i and j
对于您的具体情况,第 25 个分位数来自:
res_25 = 4 + (6-4)*(3/4) = 5.5
对于第 75 个分位数,我们得到:
res_75 = 8 + (10-8)*(1/4) = 8.5
如果你将插值方式设置为"midpoint",那么你会得到你想到的结果。
.
我觉得把这个计算看成min+(max-min)*percentile更容易理解。它与 NumPy 中描述的这个函数具有相同的结果:
linear: i + (j - i) * fraction, where fraction is the fractional part of the index surrounded by i and j
res_25 = 4+(10-4)*percentile = 4+(10-4)*25% = 5.5
res_75 = 4+(10-4)*percentile = 4+(10-4)*75% = 8.5
对于数据框中的给定数据集,当我应用 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 但根据 describe 函数它是 5.5
。
2) 另一个例子说 - 如果你得到一个整数,然后取 4 和 6 的平均值 - 即 5 - 仍然不匹配描述给出的 5.5
。
3) 另一个教程说 - 你取 2 个数字之间的差 - 乘以 25% 并加上较小的数字:
25/100 * (6-4) = 1/4*2 = 0.5
将其添加到较小的数字:4 + 0.5 = 4.5
仍然没有得到 5.5
。
有人可以澄清一下吗?
在pandas documentation中有关于分位数计算的信息,其中引用了numpy.percentile:
Return value at the given quantile, a la numpy.percentile.
然后,检查numpy.percentile explanation,我们可以看到插值方法默认设置为线性:
linear: i + (j - i) * fraction, where fraction is the fractional part of the index surrounded by i and j
对于您的具体情况,第 25 个分位数来自:
res_25 = 4 + (6-4)*(3/4) = 5.5
对于第 75 个分位数,我们得到:
res_75 = 8 + (10-8)*(1/4) = 8.5
如果你将插值方式设置为"midpoint",那么你会得到你想到的结果。
.
我觉得把这个计算看成min+(max-min)*percentile更容易理解。它与 NumPy 中描述的这个函数具有相同的结果:
linear: i + (j - i) * fraction, where fraction is the fractional part of the index surrounded by i and j
res_25 = 4+(10-4)*percentile = 4+(10-4)*25% = 5.5
res_75 = 4+(10-4)*percentile = 4+(10-4)*75% = 8.5