时间序列数据(经济,气象,活动现象等)可能拥有季节性规律,通常使用AR(自回归),MA(滑动均值),ARIMA(滑动均值自回归)等模型来发现其中潜在的规律。
下面用数据分析库statsmodels中的seasonal_decompose函数来分析某国控站点监测的空气质量历史数据:
代码如下:
import os
import pandas as pd
import matplotlib.pylab as plt
import statsmodels.tsa.seasonal as sm_seasonal
dataDir='D:/DataC/db/air'
def getData(start,end,station):
date_range=pd.date_range(start,end,freq='d')
dfs=[]
for date in date_range:
dataFile='%s.pkl'%date.strftime('%Y-%m-%d')
dataFile=os.path.join(dataDir,dataFile)
if not os.path.exists(dataFile):
continue
df0=pd.read_pickle(dataFile)
df0=df0[df0.SITECODE==station]
dfs.append(df0)
df=pd.concat(dfs)
return df
def seasonPlot(df,factor):
series=df[factor].fillna(0)
decomposeResult=sm_seasonal.seasonal_decompose(series)
fig=decomposeResult.plot()
ax0,*axes=tuple(fig.get_axes())
for ax in axes:
ax.sharex(ax0)
plt.show()
if __name__=='__main__':
start='2019'
end='2020'
station='2567A'
factor='O3'
#以原始小时数据分析
df=getData(start,end,station)
df0=df.set_index('MONITORTIME',inplace=True)
df0=df.asfreq('H')
seasonPlot(df0,factor)
#采样为日数据重新分析
df0=df0.resample('D').mean()
seasonPlot(df0,factor)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。