2016-11-03 231 views
1

我不确定我是否理解参数min_periods在Pandas rolling函数中:为什么它必须小于参数window? 我想计算(例如)滚动最大零下十个值的窗口滚动分钟,但我想开始计算之前的等待也许20值:Python Pandas滚动函数

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, default None

Minimum number of observations in window required to have a value (otherwise result is NA)

我一直没小心这里的“窗口”详细... 那么这将是实现我所试图达到的最有效的方法是什么?我是否应该这样做:

roll = df.loc[20:,'A'].rolling(window=10) 
df['C'] = roll.max() - roll.min() 

有没有更高效的方法?

+0

如果窗口是10个观察宽,但你需要20个观察到做一个计算,多少计算,你认为你将能够完成? –

+0

你的句子''但是我想在开始计算之前等待20个值:'不清楚。我想你对如何计算滚动计算感到困惑。 –

+0

我承认我的问题不是很清楚。例如,我想计算2016年1月1日开始的时间系列指数数据集上的滚动平均值。我想计算除1月份以外的2016年滚动平均值。 – Prikers

回答

3

周期窗口min_period = n选项只是意味着你需要至少n有效观测计算的滚动统计数据。

例如,假设min_period = 5,并且您在最后10观察值上有rolling mean。现在,如果最后10个观测值的6实际上缺失值,会发生什么情况?然后,鉴于4<5(事实上,这里只有4个非缺失值,并且您至少需要5个非缺失观察值),滚动均值也将丢失。

这是一个非常非常重要的选择。

从文档

min_periods : int, default None Minimum number of observations in window required to have a value (otherwise result is NA).

1

最小周期参数只是一种将函数应用于比滚动窗口更小的样本的方法。因此,假设你想要10个窗口的滚动最小值,通过5的最小周期参数将允许计算前5个数据的最小值,然后是前6个,然后是7,8,9,最后是10.现在,大熊猫可以开始滚动他的10个数据点的窗口,因为它有超过10个数据点,它会保持10