重新计算平均值和标准平均值(Python、Pandas)

重新计算平均值和标准平均值(Python、Pandas),python,pandas,Python,Pandas,问题是:我需要每分钟重新计算最后n分钟的平均值和标准偏差 也就是说,如果我们假设n==3,那么我有3个数据帧,比如12:01、12:02、12:03分钟。12:04计算最后3分钟的平均值、标准偏差 在12:05,我需要重新计算12:02、12:03、12:04的数据帧的平均值和标准偏差 现在我可以concat在新的一分钟内计算最后3个数据帧,然后计算我需要的数据帧。但这意味着我不必要地重新计算每个数据帧n-1次 有没有一种方法可以“挂起”数据帧上的计算,或者保存中间结果,添加一个数据帧,然后恢复

问题是:我需要每分钟重新计算最后n分钟的平均值和标准偏差

也就是说,如果我们假设
n==3
,那么我有3个数据帧,比如12:01、12:02、12:03分钟。12:04计算最后3分钟的平均值、标准偏差

在12:05,我需要重新计算12:02、12:03、12:04的数据帧的平均值和标准偏差

现在我可以
concat
在新的一分钟内计算最后3个数据帧,然后计算我需要的数据帧。但这意味着我不必要地重新计算每个数据帧
n-1次

有没有一种方法可以“挂起”数据帧上的计算,或者保存中间结果,添加一个数据帧,然后恢复它?(cpt显而易见的插件:出于数学原因,我不能仅仅平均最后的
n-1
平均值和std-dev值——理论上,如果每个df中的样本数相等,我可以平均平均平均值,但事实并非如此)


(显然,我没有一次获得全部过去的数据集-每分钟有一个新的df进入,并且比
n
minutes早的df数将从计算中“删除”。

您可以计算
平均值(M)、秒矩(M2)和标准值(D)
对于每个数据帧,当需要聚合其中一些数据帧时,可以使用此统计信息的属性:

m_i=len(X_i)

M(X_i)=和(X代表X中的X)/M_i

M2(X_i)=和(X**2表示X中的X)/m_i

M(X1,X2,…Xn)=和(M(X_i)*M_i)/和(M_i)

M2(X1,X2,…Xn)=和(M2(X_i)*m_i)/和(m_i)

D(X1,X2,…Xn)=M2(X1,X2,…Xn)-M(X1,X2,…Xn)**2

然后Std=sqrt(D)

其中m_i-X_i样本中的观察数


有关详细信息,请参见。您可以执行以下操作:

rolling = numpy.zeros(n)
for i, minute_df in enumerate(new_df):
  rolling[i % n] = minute_df.mean()
  print rolling.mean()