【发布时间】:2016-11-04 08:00:54
【问题描述】:
我不确定我是否理解 Pandas rolling 函数中的参数 min_periods:为什么它必须小于 window 参数?
我想计算(例如)滚动最大值减去滚动最小值,窗口为 10 个值,但我想在开始计算之前等待 20 个值:
In[1]: import pandas as pd
In[2]: import numpy as np
In[3]: df = pd.DataFrame(columns=['A','B'], data=np.random.randint(low=0,high=100,size=(100,2)))
In[4]: roll = df['A'].rolling(window=10, min_periods=20)
In[5]: df['C'] = roll.max() - roll.min()
In[6]: roll
Out[6]: Rolling [window=10,min_periods=20,center=False,axis=0]
In[7]: df['C'] = roll.max()-roll.min()
我收到以下错误:
ValueError: Invalid min_periods size 20 greater than window 10
我认为min_periods 是用来告诉函数在开始计算之前必须等待多少个值。文档说:
min_periods : int,默认无
具有值所需的窗口中的最小观察次数 (否则结果为 NA)
我没有注意这里的“窗口内”细节...... 那么实现我想要实现的目标的最有效方法是什么?我应该这样做:
roll = df.loc[20:,'A'].rolling(window=10)
df['C'] = roll.max() - roll.min()
有没有更有效的方法?
【问题讨论】:
-
如果您的窗口宽度为 10 个观察值,但您需要 20 个观察值来进行计算,您认为您可以完成多少个计算?
-
你的句子`但我想在开始计算之前等待大概 20 个值:` 不清楚。我认为您对如何计算滚动计算感到困惑。
-
我承认我的问题不是很清楚。例如,我想计算一个时间序列索引从 2016 年 1 月 1 日开始的数据集的滚动平均值。我想计算 2016 年除 1 月之外的滚动平均值。