1. 什么是时间序列

同一统计指标数值按照时间先后顺序排列而成的数据。本质上是反映一个变量随时间序列变化的趋势。

  1. 简单的例子就像是学生每一年的身高数据,这个也是一个时间序列。变量是我们的身高;每一年都不一样。
  2. 我们支付宝或者微信的零钱,每一天每一个月都有一个实际的值。

2. 在python中如何导入时间序列数据`

from dateutil.parser import parse  #关于时间的函数
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import pandas as pd
import datetime  #关于日期的函数plt.rcParams.update({'figure.figsize': (10, 7), 'figure.dpi': 120})# Import as Dataframe
df = pd.read_csv('../datasets/a10.csv', parse_dates=['date'])
df.head()
    date     value

0 1991-07-01 3.526591
1 1991-08-01 3.180891
2 1991-09-01 3.252221
3 1991-10-01 3.611003
4 1991-11-01 3.565869``

3.面板数据

有多个时间节点,且每一个时间节点上有多个维度的数据

4. 可视化时间序列

##获得数据

import matplotlib.pyplot as pltdf = pd.read_csv('../datasets/a10.csv')
df['date'] = df['date'].apply(lambda x: datetime.datetime.strptime(x, "%Y-%m-%d"))
#######关注一下匿名函数的用法
df.head()
    date     value

0 1991-07-01 3.526591
1 1991-08-01 3.180891
2 1991-09-01 3.252221
3 1991-10-01 3.611003
4 1991-11-01 3.565869

画图

# 画图
def plot_df(df, x, y, title="", xlabel="Date", ylabel="Value", dpi=100):plt.figure(figsize=(12, 4), dpi=dpi)plt.plot(df[x], df[y], color='tab:red')plt.gca().set(title=title, xlabel=xlabel, ylabel=ylabel)plt.show()
plot_df(df, x="date", y="value")

区域填充图

####用了之前的图像专题的一些知识点fill与hlines
fig, ax = plt.subplots(1, 1, figsize=(12, 4), dpi=100)
ax.fill_between(x=df['date'], y1=df['value'], y2=-df['value'], alpha=0.5, linewidth=2, color='seagreen')
ax.set_title("demo data", fontsize=16)
ax.hlines(y=0, xmin=np.min(df['date']), xmax=np.max(df['date']), linewidth=0.5)
plt.show()

季节性的图

df['year'] = df['date'].apply(lambda x: x.year)##这是年
df['month'] = df['date'].apply(lambda x: int(x.strftime('%m'))) ##这是月作为标签使用fig, ax = plt.subplots(figsize=(10, 7))
for index, tempyear in enumerate(df['year'].unique().tolist()):tempdata = df.loc[df['year'] == tempyear].sort_values(by=['date'])ax.plot(tempdata['month'], tempdata['value'], label=tempyear)ax.text(tempdata.tail(1)['month'], tempdata.tail(1)['value'], tempyear)font = {'family': 'serif','color': 'darkred','weight': 'normal','size': 16,}
ax.set_ylabel("$Drug Sales$", fontdict=font)
ax.set_xlabel('$Month$', fontdict=font)
ax.set_title("Seasibak Plot of Drug Sales Time Series",fontdict=font)
x_axis_ticks = np.arange(start=1, stop=13)
ax.set_xticks(x_axis_ticks)
ax.set_xticklabels(x_axis_ticks)

结论
  1. 从月的角度来看,在每年的1月到2月,毒品的销售都是骤降,3月再次上升,4月再次下降,显然,每年重复如此。
  2. 从年的角度来看,毒品的销售逐年增加。
    我们可以通过逐年的boxplot和逐月的boxplot观察到这些特点。
########箱图############
fig, ax = plt.subplots(ncols=2, nrows=1, figsize=(12, 5))
sns.boxplot(x='year', y='value', data=df, ax=ax[0])
sns.boxplot(x='month', y='value', data=df, ax=ax[1])ax[0].set_title("Year-wise BoxPlot \n(The Trend)", fontsize=18)
xlabel = ax[0].get_xticklabels()
ax[0].set_xticklabels(xlabel, rotation=45)
ax[1].set_title("Month-wise BoxPlot \n(The Trend)", fontsize=18)

  1. 从boxplot可以看出来:毒品销售和年以及月份是相关的。
  2. 从月份的boxplot可以看出来,1月和12月的毒品销量比较高,这个可以用假期折扣来解释。

5. 时间序列中的模式

任何时间序列可以可以被拆分为3个部分:

  1. 趋势:趋势是比较明显的,比如极速的上升或者迅速下跌。
  2. 季节性:可以在数据中看到明显的周期性,并且这个周期性和时间周期有关。这个周期可能是月,可能是季度,也可能是年。
  3. 误差项。
但是不是说所有的时间序列都必须具备这3个部分。时间序列可能没有明显的趋势、可能没有明显的周期性。或者两个都没有。

因此,可以将时间序列看成趋势、周期性、误差项的组合。

df1=pd.read_csv("guinearice.csv")
df1.head()
df2=pd.read_csv('sunspotarea.csv')
df2.head()
df3=pd.read_csv("AirPassengers.csv")
df3.head()



fig, ax = plt.subplots(nrows=1, ncols=3, figsize=(12, 4), dpi=100)
pd.read_csv("../datasets/guinearice.csv", parse_dates=['date'], index_col=['date']).plot(title="Trend Only", legend=False,ax=ax[0])
pd.read_csv("../datasets/sunspotarea.csv", parse_dates=['date'], index_col=['date']).plot(title="Seasonality Only",legend=False, ax=ax[1])
pd.read_csv("../datasets/AirPassengers.csv", parse_dates=['date'], index_col=['date']).plot(title="Trend and Seasonality",legend=False, ax=ax[2])

另外一个需要注意的就是循环行为,如果发现时间序列中的跌幅是有周期性的,且这个周期性只是和时间间隔有关,和特定的时间节点无关,那么就是周期性。不能称之为季节性。

学习总结

箱图与季节图的绘制

经典时间序列的学习(一)简单的认识时间序列相关推荐

  1. 时间序列深度学习:状态 LSTM 模型预测太阳黑子

    目录 时间序列深度学习:状态 LSTM 模型预测太阳黑子 教程概览 商业应用 长短期记忆(LSTM)模型 太阳黑子数据集 构建 LSTM 模型预测太阳黑子 1 若干相关包 2 数据 3 探索性数据分析 ...

  2. 【论文导读】Time-Series Representation Learning via Temporal and Contextual Contrasting(时间和上下文对比的时间序列表示学习)

    Time-Series Representation Learning via Temporal and Contextual Contrasting(通过时间和上下文对比的时间序列表示学习) 论文信 ...

  3. Plotly绘制时间序列图实战:简单时序图、时间范围限制的时序图

    Plotly绘制时间序列图实战:简单时序图.时间范围限制的时序图 # 简单时间序列图: import plotly as py import plotly.graph_objs as gofrom d ...

  4. 深度学习时间序列预测:GRU算法构建多变量时间序列预测模型+代码实战

    深度学习时间序列预测:GRU算法构建多变量时间序列预测模型+代码实战 注意参考:深度学习多变量时间序列预测:GRU算法构建单变量时间序列预测模型+代码实战 GRU(Gate Recurrent Uni ...

  5. 深度学习多变量时间序列预测:Encoder-Decoder LSTM算法构建时间序列多变量模型预测交通流量+代码实战

    深度学习多变量时间序列预测:Encoder-Decoder LSTM算法构建时间序列多变量模型预测交通流量+代码实战 LSTM是一种时间递归神经网络,适合于处理和预测时间序列中间隔和延迟相对较长的重要 ...

  6. [Python学习]PycURL简单学习 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source …...

    [Python学习]PycURL简单学习 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source - [Python学习] ...

  7. 数学建模学习笔记(十)——时间序列模型

    文章目录 一.时间序列综述 二.时间序列数据以及基本概念 三.时间序列分解 四.指数平滑模型 五.一元时间序列分析的模型 六.AR(p)模型 七.MA(q)模型 八.ARMA(p, q)模型 九.模型 ...

  8. 一段比较经典的多线程学习代码

    一段比较经典的多线程学习代码. 1.用到了多线程的同步问题. 2.用到了多线程的顺序问题. 如果有兴趣的请仔细阅读下面的代码.注意其中代码段的顺序,思考一下,这些代码的顺序能否互相调换,为什么?这应该 ...

  9. Deep Crossing——经典的深度学习架构

    Deep Crossing--经典的深度学习架构 论文地址 基本原理 网络结构图 代码实现 总结归纳 参考文献 论文地址 Deep Crossing: Web-Scale Modeling witho ...

  10. 经典的大学学习生活心得

    经典的大学学习生活心得 -------------------------------------------------------------------------------- http:// ...

最新文章

  1. PF_PACKET和AF_PACKET
  2. python实现微信自动发信息_Python实现智慧-定期向微信女友发送消息,python,智给,定时,发消息...
  3. C盘不够用了怎么办,看我4年未重做系统如何清理出25G的temp磁盘空间?
  4. 两台服务器之间mysql数据库怎么做同步_mysql数据库占满磁盘导致服务器无法运行...
  5. 【文章】人的好运从哪里来?
  6. 关于JVM类加载的几个问题
  7. java未释放资源_DruidDataSource关闭资源未释放
  8. 2FSK频谱matlab,2FSK信号的频谱分析及解调的实现.doc
  9. 基于linux的应用开发视频教程,基于LINUX+ARM的视频系统的应用和开发
  10. 牛客多校第五场 A digits 2 签到
  11. 洛谷P1447 [NOI2010]能量采集(容斥)
  12. dat关闭某进程_电脑程序卡住怎么办?结束进程只需要这三个键
  13. Android 显示原生Emoji
  14. 刚安装mysql怎么设置密码_安装完MySQL数据库设置密码
  15. 鸿蒙子系统解读-Camera子系统篇
  16. 看黄天鹅如何下一颗高端鸡蛋?
  17. pycharm定时运行python脚本_Python脚本定期执行_执行python脚本_如何执行python脚本
  18. html中如何做出生年月日,出生年月日怎么换成生辰八字
  19. 【C语言】C语言中赋值语句规则
  20. C++大数乘加减除比较操作集(含测试原码)

热门文章

  1. linux下USB设备编号固定
  2. Java内存泄漏分析系列之七:使用MAT的Histogram和Dominator Tree定位溢出源
  3. java速算24,java枚举速算24正解集合
  4. 生物信息之独孤九剑——find
  5. Openwrt Web gui LUCI 流程浅析
  6. Imatest客观测试之信噪比动态范围
  7. android 照相机裁剪,Android拍照、照片选择以及图片裁剪完全解析
  8. git 删除历史commit
  9. POJ 3295 Tautology(构造)
  10. Sql Server专题三:SQL操作与技巧