gab*_*how 2 python percentile dataframe pandas
我创建了一个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
Run Code Online (Sandbox Code Playgroud)
我计算长度= 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
Run Code Online (Sandbox Code Playgroud)
然后检查我分别在第一个窗口计算75%
df.iloc[0:3].quantile(0.75)
Out[22]:
0 2.5
Name: 0.75, dtype: float64
Run Code Online (Sandbox Code Playgroud)
为什么我得到不同的价值?
原因,如开发人员所给出的 -
看起来这里的区别在于
quantile并且percentile取最近点的加权平均值,而rolling_quantile只使用最近点的一个(没有平均值).
Rolling.quantile 在计算分位数时没有插值.
该错误已修复为0.21.
对于旧版本,修复程序使用的是rolling_apply.
df.rolling(window=3, center=False).apply(lambda x: pd.Series(x).quantile(0.75))
0
0 NaN
1 NaN
2 2.5
3 2.5
4 2.5
5 2.5
6 2.5
7 2.5
8 2.5
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1223 次 |
| 最近记录: |