干货 :手把手教你用Python进行时间序列分解和预测

什么是时间序列?
如何在Python中绘制时间序列数据?
时间序列的要素是什么?
如何分解时间序列?
经典分解法
如何获得季节性调整值?
STL分解法
时间序列预测的基本方法:
Python中的简单移动平均(SMA)
为什么使用简单移动平均?
Python中的加权移动平均(WMA)
Python中的指数移动平均(EMA)
什么是时间序列?
如何在PYTHON中绘制时间序列数据?
#Reading?Time?Series?DataAirpassenger = pd.read_csv("AirPassengers.csv")Airpassenger.head(3)
Airpassenger = Airpassenger.set_index('date')pyplot.rcParams["figure.figsize"] = (12,6)Airpassenger.plot()pyplot.show()

航空旅客人数
from datetime import datetime# Airpassenger["date"] = Airpassenger["date"].apply(lambda x: datetime.strptime(x, "%d-%m-%Y"))Airpassenger["year"] = Airpassenger["date"].apply(lambda x: x.year)Airpassenger["qtr"] = Airpassenger["date"].apply(lambda x: x.quarter)Airpassenger["yearQtr"]=Airpassenger['year'].astype(str)+'_'+Airpassenger['qtr'].astype(str)airPassengerByQtr=Airpassenger[["passengerCount", "yearQtr"]].groupby(["yearQtr"]).sum()
pyplot.rcParams["figure.figsize"] = (14,6)pyplot.plot(airPassengerByQtr)pyplot.xticks(airPassengerByQtr.index, rotation='vertical')

时间序列的要素是什么?
如何分解时间序列?
时间序列不必具有所有要素。
弄清该时间序列是可加的还是可乘的。
经典分解法
该方法起源于1920年,是诸多方法的鼻祖。经典分解法有两种形式:加法和乘法。Python中的statsmodels库中的函数season_decompose()提供了经典分解法的实现。在经典分解法中,需要你指出时间序列是可加的还是可乘的。你可以在此处(https://otexts.com/fpp2/classical-decomposition.html)了解有关加法和乘法分解的更多信息。
import numpy as npfrom pandas import read_csvimport matplotlib.pyplot as pltfrom statsmodels.tsa.seasonal import seasonal_decomposefrom pylab import rcParamselecequip = read_csv(r"C:/Users/datas/python/data/elecequip.csv")result = seasonal_decompose(np.array(elecequip), model='multiplicative', freq=4)rcParams['figure.figsize'] = 10, 5result.plot()pyplot.figure(figsize=(40,10))pyplot.show()

如何获得季节性调整值?
该技术对异常值不可靠。
它倾向于使时间序列数据中的突然上升和下降过度平滑。
假设季节性因素每年只重复一次。
对于前几次和最后几次观察,该方法都不会产生趋势周期估计。
STL分解法
趋势周期平滑度
季节性变化率
可以控制对用户异常值或异常值的鲁棒性。这样你就可以控制离群值对季节性和趋势性的影响。
Import?pandas?as?pdImport?seaborn?as?snsImport?matplotlib.pyplot?as?pltFrom statsmodels.tsa.seasonal import STLelecequip?=read_csv(r"C:/Users/datas/python/data/elecequip.csv")stl?=?STL(elecequip,?period=12,?robust=True)res_robust?=?stl.fit()fig = res_robust.plot()

时间序列预测的基本方法
PYTHON中的简单移动平均(SMA)
为什么使用简单移动平均?
Import pandas as pdfrom matplotlib import pyplotelecequip = pd.read_csv(r"C:/Users/datas/python/data/elecequip.csv")# Taking moving average of last 6 obsrolling = elecequip.rolling(window=6)rolling_mean = rolling.mean()# plot the two seriespyplot.plot(elecequip)pyplot.plot(rolling_mean, color='red')pyplot.show()

elecequip["x"].rolling(window=3,?center=True).mean()PYTHON中的加权移动平均(WMA)
import?randomrand?=?[random.randint(1,?i)?for?i?in?range(100,110)]data?=?{}data["Sales"] = randdf?=?pd.DataFrame(data)weights = np.array([0.5, 0.25, 0.10])sum_weights?=?np.sum(weights)df['WMA']=(df['Sales'].rolling(window=3,?center=True).apply(lambda x: np.sum(weights*x)/sum_weights, raw=False))print(df['WMA'])
PYTHON中的指数移动平均(EMA)
import numpy as npimport pandas as pdimport matplotlib.pyplot as pltfrom statsmodels.tsa.api import ExponentialSmoothingEMA_fit = ExponentialSmoothing(elecequip, seasonal_periods=12, trend='add', seasonal='add').fit(use_boxcox=True)fcast3 = EMA_fit.forecast(12)ax = elecequip.plot(figsize=(10,6), marker='o', color='black', title="Forecasts from Exponential Smoothing" )ax.set_ylabel("Electrical Equipment")ax.set_xlabel("Index")# For plotting fitted values#?EMA_fit.fittedvalues.plot(ax=ax,?style='--',?color='red')EMA_fit.forecast(12).rename('EMS?Forecast').plot(ax=ax,?style='--',?marker='o',?color='blue',?legend=True)
1 2 3 4 | import numpy as np import pandas as pd import matplotlib.pyplot as plt from statsmodels.tsa.api import SimpleExpSmoothing, Holt |
?
什么是时间序列数据?
如何可视化和更深入地识别数据模式(如果有)?
介绍了可加性和可乘性时间序列模型。
研究了Python中分解时间序列的不同方法。
最后,我们学习了如何在Python中运行一些非常基本的方法,例如移动平均(MA),加权移动平均(WMA),指数平滑模型(ESM)及其变体,例如SESM和Hotl。
原文标题:
TIME SERIES FORECAST AND DECOMPOSITION – 101 GUIDE PYTHON
原文链接:
https://datasciencebeginners.com/2020/11/25/time-series-forecast-and-decomposition-101-guide-python/
版权声明:本号内容部分来自互联网,转载请注明原文链接和作者,如有侵权或出处有误请和我们联系。
合作请加QQ:365242293??
数据分析(ID?:?ecshujufenxi?)互联网科技与数据圈自己的微信,也是WeMedia自媒体联盟成员之一,WeMedia联盟覆盖5000万人群。

关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
关注网络尖刀微信公众号随时掌握互联网精彩
- 1 习近平将发表二〇二六年新年贺词 7904141
- 2 2026年国补政策来了 7808738
- 3 东部战区:开火!开火!全部命中! 7712893
- 4 2026年这些民生政策将惠及百姓 7616985
- 5 小学食堂米线过期2.5小时被罚5万 7519709
- 6 解放军喊话驱离台军 原声曝光 7428214
- 7 为博流量直播踩烈士陵墓?绝不姑息 7327605
- 8 每月最高800元!多地发放养老消费券 7238391
- 9 数字人民币升级 1月1日起将计付利息 7141831
- 10 2026年1月1日起 一批新规将施行 7040675








数据分析
