大熊猫是否表现出错误的百分位数?

问题描述 投票:4回答:3

我正在使用这个WNBA数据集here。我正在分析Height变量,下面是一个表格,显示了记录的每个高度值的频率,累积百分比和累积频率:

从表中我可以很容易地得出结论,第一个四分位数(第25个百分位数)不能大于175。

然而,当我使用Series.describe()时,我被告知第25百分位数是176.5。为什么会这样?

wnba.Height.describe()
count    143.000000
mean     184.566434
std        8.685068
min      165.000000
25%      176.500000
50%      185.000000
75%      191.000000
max      206.000000
Name: Height, dtype: float64
python pandas statistics
3个回答
4
投票

有各种方法来估计分位数。 175.0 vs 176.5涉及两种不同的方法:

  1. 包括Q1(这给出了176.5)和
  2. 不包括Q1(给出175.0)。

估计的不同之处如下

#1
h = (N − 1)*p + 1 #p being 0.25 in your case
Est_Quantile =  x⌊h⌋ + (h − ⌊h⌋)*(x⌊h⌋ + 1 − x⌊h⌋)

#2
h = (N + 1)*p   
x⌊h⌋ + (h − ⌊h⌋)*(x⌊h⌋ + 1 − x⌊h⌋) 

1
投票

这是一个统计问题。百分位数有很多定义。以下是为什么在计算第25百分位指数时加1的原因之一:

一个直观的答案是数字1到n的平均值不是n / 2而是(n + 1)/ 2。所以这给你一个提示,简单地使用p * n会产生稍微过小的值。

资源:


0
投票

这是因为默认情况下describe()进行线性插值。

所以,没有pandas没有显示错误的百分位数 (它只是没有显示你想看到的百分位数)。

为了得到你所期望的,你可以在.quantile()系列上使用Height,为'lower'指定插值:

df = pd.read_csv('../input/WNBA Stats.csv')
df.Height.quantile(0.25,interpolation='lower') #interpolation lower to get what you expect

有关更多选项,请参阅documentation


请注意,作为@jpp said

百分位数有很多定义

你可以看到这个answer too谈论numpypandas百分位数计算之间的差异。

© www.soinside.com 2019 - 2024. All rights reserved.