⽤python画时序图源代码_python时间序列画图plot总结
画图从直觉上来讲就是为了更加清晰的展⽰时序数据所呈现的规律(包括趋势,随时间变化的规律(⼀周、⼀个⽉、⼀年等等)和周期性规律),对于进⼀步选择时序分析模型⾄关重要。下⾯主要是基于pandas库总结⼀下都有哪些常见图可以⽤来分析。总共有下⾯⼏种:
线形图
直⽅图和密度图
箱形图
热⼒图
滞后图
散点图
⾃相关图
(1)线形图
这是最基本的图了,横轴是时间,纵轴是变量,描述了变量随着时间的变化关系,图中显然也容易发现上述的潜在规律。直接上代码:
#-*- coding: utf-8 -*-
from pandas importSeriesimportmatplotlib.pyplot as plt
data= Series.from_csv('minimum.csv',header=0)
data.astype(float)print(data.head())
data.plot(style='r.')
plt.show()
也可以只看其中⼀年的,⽐⽅说1990年,如下:
data = Series.from_csv('minimum.csv', header=0)
one_year= data['1990']
one_year.plot()
另外plot的style可以查看⽂档⾃⼰选择喜欢的,⽂档链接
(2)直⽅图和密度图
直⽅图,⼤家是知道的,他没有时序,只是在⼀个时间范围的变量范围统计,⽐⽅说这些数据分成10个bins,我们会看到每个bin的数量(⽐⽅说多少天,⽉等等),这种统计⽅法同密度图是⼀样的,能看到变量在哪些取值范围⽐较多,哪些⽐较少等等,观测到数据的潜在分布规律。
from pandas importSeriesimportmatplotlib.pyplot as plt
data= Series.from_csv('minimum.csv', header=0)
data.hist()
plt.show()
data.plot(kind='kde')
plt.show()
这⾥⾯主要有⼀个问题,就是什么是kde:Kernel Density Estimation,sklearn的tutorial会告诉你,请
看⽂档
(3)箱形图
from pandas import *
importmatplotlib.pyplot as plt
data= Series.from_csv('minimum.csv', header=0)
groups= upby(TimeGrouper('A'))
years=DataFrame()for name,group ingroups:
ar]=group.values
years.boxplot()
plt.show()
这⾥贴⼀下图:
顺便介绍⼀下箱形图,它能显⽰出⼀组数据的最⼤值、最⼩值、中位数、及上下四分位数,其中最主要的是最⼤值最⼩值给的是在上下四分位数的某个区间⾥⾯,形成⼀个盒⼦加上胡须(因此也叫盒须图),例如上图1981年,最⼤值是20-25之间,最⼩值在0-5之间,务必记住是在⼀个⼤概率区间⾥⾯最⼤最⼩,不是实际的最⼤最⼩,离开了这个区间会有很多⼩圆圈和*表⽰,圆圈表⽰离值,*表⽰极端值。
当然也可以取出其中⼀年分析⼀下:
from pandas import *
importmatplotlib.pyplot as plt
data= Series.from_csv('minimum.csv', header=0)
python新手代码画图data= data['1990']
groups= upby(TimeGrouper('M'))
months= concat([DataFrame(x[1].values) for x in groups], axis=1)
months=DataFrame(months)
months.boxplot()
plt.show()
(4)热⼒图
热⼒图就更加形象点了,虽然我们不知道数值,但是通过颜⾊我们能看看极值的分布,颜⾊越鲜艳,数值越⼤(红黄),颜⾊越暗淡,数值越⼩(蓝绿),当然显⽰也有可能不⼀样。
#1988年的例⼦
from pandas import *
importmatplotlib.pyplot as plt
data= Series.from_csv('minimum.csv', header=0)
data= data['1988']
groups= upby(TimeGrouper('M'))
months= concat([DataFrame(x[1].values) for x in groups], axis=1)
months=DataFrame(months)
plt.matshow(months,interpolation=None,aspect='auto')
plt.show()
(5)滞后图和散点图
这⾥应该注意⼀下,滞后图与散点图可以按照时序画,那就是(1)⾥⾯的线形图了,这⾥讲的其实不是时序的,⽽是分析数据相关性的,我们给数据⼀段时间的观测间隔,因为假定前⾯的数据和后⾯的数据有关系,是正相关或是负相关还是什么,选定⼀个间隔,plot⼀下。
from pandas import *
importmatplotlib.pyplot as pltfrom pandas.plotting importlag_plot
data= Series.from_csv('minimum.csv', header=0)
lag_plot(data)
plt.show()
明显我们看到了正相关。下⾯给出⼀个星期的散点图,我们可以看到间隔⼀天、两天、三天...... from pandas import *
importmatplotlib.pyplot as plt
data= Series.from_csv('minimum.csv', header=0)
values=DataFrame(data.values)
lags= 7columns=[values]for i in range(1,(lags + 1)):
columns.append(values.shift(i))
dataframe= concat(columns, axis=1)
columns= ['t']for i in range(1,(lags + 1)):
columns.append('t-' +str(i))
plt.figure(1)for i in range(1,(lags + 1)):
ax= plt.subplot(240 +i)
ax.set_title('t vs t-' +str(i))
plt.scatter(x=dataframe['t'].values, y=dataframe['t-'+str(i)].values)
plt.show()
(6)⾃相关图
这个不⽤说的,其实就是考虑数据和⼀定间隔数据的相关性,越接近1是正相关,接近-1是负相关,接近0就是相关性很低。下⾯就是计算公式(右边是左边的特殊情形,也就是⾃相关图的公式,因为是⾃⼰和⾃⼰所有可能的间隔产⽣的),下⾯代码给的⾃相关默认是数据和滞
后1步的相关性。
from pandas importSeriesimportmatplotlib.pyplot as pltfrom pandas.plotting importautocorrelation_plot
series= Series.from_csv('minimum.csv', header=0)
autocorrelation_plot(series)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。