gpt4 book ai didi

python - 时间序列 Pandas 的滚动平均值

转载 作者:行者123 更新时间:2023-12-01 04:14:05 24 4
gpt4 key购买 nike

我正在尝试了解滚动统计。我创建了一个数据框:

d = date_range('1/1/2011', periods=72, freq='H')
s = Series(randn(len(rng)), index=rng)

如:

import numpy as np
from numpy.random import randn
import time
r = date_range('1/1/2011', periods=72, freq='H')
r
len(r)
[r[i] for i in range(len(r))]
s = Series(randn(len(r)), index=r)
s
s.plot()
df_new = DataFrame(data = s, columns=['Random Number Generated'])
df_new.diff().hist()

现在,我试图在 DataFrame 的新列中查找过去 3 小时内该系列的滚动平均值。我尝试首先找到滚动平均值:

df_new['mean'] = rolling_mean(df_new, window=3)

我说得对吗?但结果看起来并不意味着。有人能给我解释一下这个吗?

最佳答案

我重新运行了你的代码,没有发现任何问题。似乎有效。如果您想获取过去 3 小时的滚动平均值,rolling_mean(df_new, window=5) 应为 rolling_mean(df_new, window=3)

这是我的验证代码。

import numpy as np

window = 3
mean_list = []
val_list = []
for i, val in enumerate(s):
val_list.append(val)
if i < window - 1:
mean_list.append(np.nan)
else:
mean_list.append(np.mean(np.array(val_list)))
val_list.pop(0)
df_new['mean2'] = mean_list
print(df_new)

输出:

                     Random Number Generated      mean     mean2
2011-01-01 00:00:00 1.457483 NaN NaN
2011-01-01 01:00:00 0.009979 NaN NaN
2011-01-01 02:00:00 0.581128 0.682864 0.682864
2011-01-01 03:00:00 1.905528 0.832212 0.832212
2011-01-01 04:00:00 2.221040 1.569232 1.569232
2011-01-01 05:00:00 0.696211 1.607593 1.607593
2011-01-01 06:00:00 -0.854759 0.687497 0.687497
2011-01-01 07:00:00 -0.033226 -0.063925 -0.063925
2011-01-01 08:00:00 0.097187 -0.263599 -0.263599
2011-01-01 09:00:00 -1.579210 -0.505083 -0.505083
...

rolling_mean的结果与手动计算的滚动平均值一致。

确认有效性的另一种方法是查看计算的滚动平均值的图。 pandas.DataFrame 准备了 plot 方法来轻松绘制图形。

 from matplotlib import pyplot 
df_new.plot()
pyplot.show()

enter image description here

关于python - 时间序列 Pandas 的滚动平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34541165/

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