簡體   English   中英

使用滾動窗口熊貓計算百分位數

[英]calculate percentile using rolling window 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

為什么我得到不同的價值?

這是GH9413GH16211中引用的錯誤。

由開發人員給出的原因-

看起來這里的區別在於, quantilepercentile取最近點的加權平均值,而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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM