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

时间:2018-02-28 08:35:35

标签: python pandas statistics

我正在使用此WNBA数据集Apple's KVO chapter in the "Using Swift with Cocoa and Objective-C" book。我正在分析Height变量,下面的表格显示了记录的每个高度值的频率,累积百分比和累积频率:

img

从表格中我可以很容易地得出结论,第一个四分位数(第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

3 个答案:

答案 0 :(得分:4)

有多种方法可以估算分位数 175.0 vs 176.5涉及两种不同的方法:

  1. 包括Q1(这给出176.5)和
  2. 排除Q1(给出175.0)。
  3. 估计如下:

    #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 :(得分:1)

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

  

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

资源:

答案 2 :(得分: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

有关更多选项,请参阅Hortonworks employee

请注意documentation

  

百分位数有很多定义

您可以看到此@jpp said,其中讨论了numpypandas百分位数计算之间的差异。