【问题标题】:Rolling mean with intervals带间隔的滚动平均值
【发布时间】:2021-11-11 17:25:03
【问题描述】:

如何有效地计算固定间隔的滚动平均值?

import numpy as np
import pandas as pd

n=50
s = pd.Series(data = np.random.randint(0,10,n), index = pd.date_range(pd.to_datetime('today').floor('D'), freq='D', periods = n)) 

例如在上述间隔为 4 天且元素数量为 3 的系列中,新系列的第 i 个元素t=t_i 将具有s_i =1/3 *( s_(i-4) + s_(i-4*2) + s_(i-4*3) )

【问题讨论】:

  • 这个输入的预期输出是什么?像s.resample('4D').mean() 这样的东西?其中ss = pd.Series(data....)上面的系列
  • 据我了解,您基本上会进行 4D 滚动平均计算,但我需要保持间隔中的常规间隙。

标签: python pandas datetime mean rolling-computation


【解决方案1】:

您查看pandas.DataFrame.rolling 了吗?它可能有你要找的东西。

如果我理解正确,这里有一个 1 到 50 的数组示例:

interval = 4
window = 3
data = np.linspace(1,50,50)
arr = pd.Series(np.array(data)[::interval]) #subset data by every 4th value
indexer = pd.api.indexers.FixedForwardWindowIndexer(window_size=window) #look forward 3 spaces on every 4th value
arr.rolling(indexer).mean() #take the mean of the window

输出将是一个数组 [5, 9, 13, 17, ...],5 对应于 1、5 和 9 的平均值,而 9 是 5、9 和 13 的平均值。

【讨论】:

  • 这如何回答这个问题?
猜你喜欢
  • 2013-03-24
  • 1970-01-01
  • 2019-07-06
  • 1970-01-01
  • 2020-07-30
  • 1970-01-01
  • 2020-07-12
相关资源
最近更新 更多