【问题标题】:how to calculate moving average which exclude previous set of values如何计算排除前一组值的移动平均线
【发布时间】:2021-11-26 08:53:58
【问题描述】:

我试图找到类似于移动平均线但不包括前一组值的东西 下面的 Excel 表快照显示了窗口为 2 的平均值。

snapshot

我尝试在 pandas 中使用滚动和扩展命令,但它们包含以前的值。 有没有其他可以从 pandas 中使用的方法

【问题讨论】:

  • 你能举一个“排除前一组值的移动平均线”的例子吗?我不是 100% 确定这意味着什么。

标签: python pandas average


【解决方案1】:

执行此操作的一种简单方法是将列转换为列表,然后使用循环(或更准确地说是“列表理解”)计算移动平均值。

# 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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-18
    • 2021-05-30
    • 1970-01-01
    相关资源
    最近更新 更多