如何计算不包括前一组值的移动平均值



我试图找到类似移动平均值的东西,但排除了之前的一组值下面的excel表快照显示了窗口为2的平均值。

快照

我尝试在panda中使用滚动和展开命令,但它们包含了以前的值。熊猫还有其他方法吗

一种简单的方法是将列转换为列表,然后使用循环(或者更准确地说是"列表理解"(计算移动平均值。

# Creating a DataFrame (like the one you have)
values_col = [i * 10 for i in range(10)]
df = pd.DataFrame({'values': values_col})
window_size = 2
hop_size = 2
n = len(df.index)
values_moving_average = [sum(df['values'].tolist()[i - window_size : i]) / window_size for i in range(window_size, n + 1, hop_size)]

然后你会在values_moving_average列表中得到你想要的移动平均值:

# result
[5.0, 25.0, 45.0, 65.0, 85.0]

这里,window_size是窗口的大小,hop_size是一个变量,可以用来指定两个连续窗口的第一个索引之间的距离。例如,如果hop_size = 1,那么我们将获得列表中以下窗口的平均值:

(0, 10), (10, 20), (20, 30), ..., (80, 90)

但是,有了hop_size = 2,我们将有以下窗口:

(0, 10), (20, 30), (40, 50), ..., (80, 90)

最新更新