gpt4 book ai didi

python-3.x - Pandas 滚动窗口获得最小值

转载 作者:行者123 更新时间:2023-12-04 10:56:36 24 4
gpt4 key购买 nike

我有一个包含 6169 个时间序列数据点的数据集。我试图在某个滚动窗口内找到最小值。在这种情况下,窗口为 396(一年多一点)。我使用 Pandas 滚动功能编写了以下代码。但是,当我运行代码时,我最终得到的值比我应该得到的值多得多。我的意思是我应该得到 6169/396 = 15 或 16 个值。但相反,我得到了 258 个值。任何想法为什么?为了了解数据,我发布了一个图。我已经标记了一些它应该捕捉到的红色圆圈点,通过观察图表,它肯定不会捕捉到那么多点。我的代码行有什么问题吗?

m4_minidx = df['fitted.values'].rolling(window = 396).min() == df['fitted.values']
m4_min = df[m4_minidx]
print(df.shape)
print(m4_min.shape)

output:
(6169, 5)
(258, 5)

enter image description here

最佳答案

问题是滚动窗口,每次都会得到一个局部最小值。这是一个草图来解释:

enter image description here

黑线是移动窗口,而红色圆圈是局部最小值。

你要解决的问题稍微复杂一些,找到局部最小值一般来说并不简单。看看这些其他资源:local minima x-y或者
local minima 1d arraypeak finder in scipy library

==============编辑==================

如果您的数据框中没有重复,您将获得预期的结果:

x = np.random.random(6169)
df = pd.DataFrame({'fitted.values': x})

m4_minidx = df['fitted.values'].rolling(window = 396).min() == df['fitted.values']
m4_min = df[m4_minidx]
print(df.shape)
print(m4_min.shape)

输出:
(6169, 1)
(14, 1)

关于python-3.x - Pandas 滚动窗口获得最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59135943/

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