Py学习  »  Python

Python绘制时间序列数据的时序图、自相关图和偏自相关图

Python小屋 • 6 年前 • 664 次点击  

时序图、自相关图和偏相关图是判断时间序列数据是否平稳的重要依据。

本文涉及的扩展库numpy、pandas、statsmodels一般可以使用pip进行在线安装,如果安装失败,可以到http://www.lfd.uci.edu/~gohlke/pythonlibs/下载相应的whl文件进行离线安装。

另外,绘制自相关图的函数plot_acf()和绘制偏自相关图的函数plot_pacf()还有更多参数可以使用,请自行挖掘和探索。


from random import randrange
import numpy as np
import pandas as pd

import matplotlib.pyplot as plt
import matplotlib.font_manager as fm

from statsmodels.graphics.tsaplots import plot_acf, plot_pacf


def generateData(startDate, endDate):
    df = pd.DataFrame([300+i*30+randrange(50) for i in range(31)],\
                      columns=['营业额'],\
                      index=pd.date_range(startDate, endDate, freq='D'))
    return df


# 生成测试数据,模拟某商店营业额
data = generateData('20170601''20170701')
print(data)

# 绘制时序图
myfont = fm.FontProperties(fname=r'C:\Windows\Fonts\STKAITI.ttf')
data.plot()
plt.legend(prop=myfont) 
plt.show()
# 绘制自相关图
plot_acf(data).show()
# 绘制偏自相关图
plot_pacf(data).show()


某次运行得到的随机数据为:

                   营业额
2017-06-01   333
2017-06-02   370
2017-06-03   392
2017-06-04   425
2017-06-05   457
2017-06-06   467
2017-06-07   488
2017-06-08   540
2017-06-09   575
2017-06-10   575
2017-06-11   635
2017-06-12   631
2017-06-13   706
2017-06-14   691
2017-06-15   728
2017-06-16   767
2017-06-17   783
2017-06-18   831
2017-06-19   846
2017-06-20   894
2017-06-21   908
2017-06-22   954
2017-06-23   971
2017-06-24  1011
2017-06-25  1051
2017-06-26  1089
2017-06-27  1120
2017-06-28  1118
2017-06-29  1143
2017-06-30  1181
2017-07-01  1240


相应的时序图为:

从时序图来看,有明显的增长趋势,原始数据属于不平稳序列。


相应的自相关图为:

从自相关图来看,呈现三角对称形式,不存在截尾或拖尾,属于单调序列的典型表现形式,原始数据属于不平稳序列。


相应的偏自相关图为:


从偏自相关图形来看,也不存在截尾或拖尾,属于不平稳序列。

对于不平稳序列而言,要获得平稳序列的方法之一就是进行差分运算,请参考“相关阅读”第一条。


----------相关阅读----------

Python使用pandas对数据进行差分运算

Python+pyplot绘制带文本标注的柱状图

Python使用matplotlib填充图形指定区域

Python+numpy实现函数向量化

Python使用numpy计算矩阵特征值、特征向量与逆矩阵

Python使用扩展库numpy计算矩阵加权平均值

Python使用matplotlib绘制三维曲线

Python扩展库scipy.misc中图像转换成pillow图像

详解Python科学计算扩展库numpy中的矩阵运算(1)

Python科学计算扩展库numpy中的广播运算

Python扩展库numpy中的布尔运算

Python获取numpy数组中最大的5个元素(保持原顺序)

Python稀疏矩阵运算库scipy.sparse用法精要

Python科学计算库numpy中的add运算

使用Jupyter Notebook+bokeh绘图入门完整步骤

Python高级数组处理模块numpy用法精要

Python扩展库scipy中值滤波算法的应用

Python绘制带标记和箭头的树结构

Python绘制带有中文标签和图例的图

Python数据可视化案例三:使用Slider组件调整曲线参数

Python数据可视化案例二:动态更新数据

Python数据可视化案例一:自定义曲线频率、颜色与线型

祝所有程序员1024节日快乐

学会提问,你就成功了一大半!

盘点那些让人上火的提问方式(论如何让交流更高效)



----------喜大普奔----------

1、继《Python程序设计基础》(2017年9月第5次印刷)、《Python程序设计(第2版)》(2017年9月第4次印刷)、《Python可以这样学》(2017年7月第3次印刷)系列图书之后,董付国老师新书《Python程序设计开发宝典》已于2017年8月1日在清华大学出版社出版,并于2017年9月进行了第2次印刷。为庆祝新书《Python程序设计开发宝典》全面上架,清华大学出版社联合“赣江图书专营”淘宝店推出特价优惠活动,《Python程序设计开发宝典》原价69元,新书上架期间超低价39.8元,可以复制下面的链接使用浏览器打开查看图书详情和购买:

https://detail.tmall.com/item.htm?spm=a1z10.3-b-s.w4011-14464369246.84.46f16db0roWfX4&id=557107249812&rn=339cbc9df2bac424664103917dedfbd2&abbucket=8&tbpm=3


2、董付国老师新作《中学生可以这样学Python》已正式出版,很快就会在各大书城全面上架。


3、董付国老师6本Python系列图书阅读指南



今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/7UA8PYc2rg
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/3915
 
664 次点击