使用滚动窗口熊猫计算百分位数

时间:2018-03-23 15:39:51

标签: python pandas dataframe percentile

我将pandas数据框创建为

df = pd.DataFrame(data=[[1],[2],[3],[1],[2],[3],[1],[2],[3]])
df
Out[19]: 
   0
0  1
1  2
2  3
3  1
4  2
5  3
6  1
7  2
8  3

我在长度= 3的窗口上计算75%的百分位数

df.rolling(window=3,center=False).quantile(0.75)
Out[20]: 
     0
0  NaN
1  NaN
2  2.0
3  2.0
4  2.0
5  2.0
6  2.0
7  2.0
8  2.0

然后检查我是否分别在第一个窗口计算75%

df.iloc[0:3].quantile(0.75)
Out[22]: 
0    2.5
Name: 0.75, dtype: float64

为什么我得到不同的价值?

1 个答案:

答案 0 :(得分:5)

这是一个错误,在GH9413GH16211中引用。

由开发者给出的原因 -

  

这看起来差异在于DataSourceNamequantile   最近点的加权平均值,而rolling_quantile   只使用一个最近的点(没有平​​均值)。

计算分位数时,

percentile没有插值。

错误已修复为0.21。

对于旧版本,修复程序使用的是Rolling.quantile

rolling_apply