如何计算排除前一组值的移动平均线
how to calculate moving average which exclude previous set of values
我试图找到类似于移动平均线但不包括前一组值的东西
下面 excel sheet 的快照显示了 window 为 2 的平均值。
snapshot
我尝试在 pandas 中使用滚动和扩展命令,但它们包括以前的值。
pandas
还有其他方法可以使用吗
一个简单的方法是将列转换为列表,然后使用循环(或更准确地说是“列表理解”)计算移动平均线。
# 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
是window的大小,hop_size是一个变量,可以用来指定两个连续windows的第一个索引之间的距离.例如,如果 hop_size = 1
,那么我们将得到列表中以下 windows 的平均值:
(0, 10), (10, 20), (20, 30), ..., (80, 90)
但是,对于 hop_size = 2
,我们将有以下 windows:
(0, 10), (20, 30), (40, 50), ..., (80, 90)
我试图找到类似于移动平均线但不包括前一组值的东西 下面 excel sheet 的快照显示了 window 为 2 的平均值。
snapshot
我尝试在 pandas 中使用滚动和扩展命令,但它们包括以前的值。 pandas
还有其他方法可以使用吗一个简单的方法是将列转换为列表,然后使用循环(或更准确地说是“列表理解”)计算移动平均线。
# 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
是window的大小,hop_size是一个变量,可以用来指定两个连续windows的第一个索引之间的距离.例如,如果 hop_size = 1
,那么我们将得到列表中以下 windows 的平均值:
(0, 10), (10, 20), (20, 30), ..., (80, 90)
但是,对于 hop_size = 2
,我们将有以下 windows:
(0, 10), (20, 30), (40, 50), ..., (80, 90)