gpt4 book ai didi

pandas - 如何计算numpy中一维数组的移动(或滚动,如果你愿意)百分位数/分位数?

转载 作者:行者123 更新时间:2023-12-02 08:10:29 28 4
gpt4 key购买 nike

在 pandas 中,我们有 pd.rolling_quantile()。在 numpy 中,我们有 np.percentile(),但我不知道如何做它的滚动/移动版本。

解释我所说的移动/滚动百分位数/分位数的意思:

给定数组[1, 5, 7, 2, 4, 6, 9, 3, 8, 10],移动分位数0.5(即移动百分位数50 %) 窗口大小为 3 为:

1
5 - 1 5 7 -> 0.5 quantile = 5
7 - 5 7 2 -> 5
2 - 7 2 4 -> 4
4 - 2 4 6 -> 4
6 - 4 6 9 -> 6
9 - 6 9 3 -> 6
3 - 9 3 8 -> 8
8 - 3 8 10 -> 8
10

所以 [5, 5, 4, 4, 6, 6, 8, 8] 就是答案。为了使结果序列与输入的长度相同,一些实现插入 NaNNone,而 pandas.rolling_quantile() 允许计算前两个分位数值按较小的窗口。

最佳答案

series = pd.Series([1, 5, 7, 2, 4, 6, 9, 3, 8, 10])

In [194]: series.rolling(window = 3, center = True).quantile(.5)

Out[194]:
0 nan
1 5.0000
2 5.0000
3 4.0000
4 4.0000
5 6.0000
6 6.0000
7 8.0000
8 8.0000
9 nan
dtype: float64

Center 默认为 False。因此,您需要手动将其设置为 True 以使分位数计算窗口对称地包含当前索引。

关于pandas - 如何计算numpy中一维数组的移动(或滚动,如果你愿意)百分位数/分位数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47585465/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com