在Pandas中,可以通过rolling函数实现移动窗口数据的计算。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
index=pd.date_range('20200201','20200215')
data=np.random.randint(1,10,size=15)
s1_data=pd.Series(data, index=index)
s1_data_rolling=s1_data.rolling(3).mean() # 设置观测窗口观测数量为3
s1_data_rolling_min=s1_data.rolling(3,min_periods=1).mean() #min_periods 设置观测窗口最小观测数量
pd.DataFrame({'origin':s1_data,'rolling':s1_data_rolling,'rolling_min':s1_data_rolling_min})
plt.figure(figsize=(12,6))
plt.plot(s1_data,label='no rolling')
plt.plot(s1_data_rolling, label='rolling')
plt.legend()
import pandas as pd
import numpy as np
index = pd.date_range('2019-01-01',periods=10)
#创建日期序列
data = pd.DataFrame(np.arange(len(index)),index=index,columns=['test'])
#创建简单的pd.DataFrame
data
#打印data
data['sum'] = data.test.rolling(3).sum()
#移动3个值,进行求和
data['mean'] = data.test.rolling(3).mean()
#移动3个值,进行求平均数
data['mean1'] = data.test.rolling(3,min_periods=2).mean()
data结果: