【原创】python代写使用ARIMA模型时间序列分析数据分析报告(附代码数据) (2)
有问题到百度搜索“大数据部落”就可以了
欢迎登陆官网:https://www.360docs.net/doc/fc9687063.html,/datablog
python使用ARIMA模型时间序列分析数据分析报告
介绍
时间序列(从现在开始被称为TS)被认为是分析领域中鲜为人知的技能之一(即使我几天前对它几乎没有任何线索)。但是正如你所知道我们的就职迷你黑客马拉松是基于它的,我自己开始了解解决时间序列问题的基本步骤,在这里我和你分享同样的事情。这些肯定会帮助你在今天的黑客马拉松中获得一个体面的模特。
我们的旅程将经历以下步骤:
1.什么使时间序列特别?
2.在Pandas中加载和处理时间序列
3.如何检查时间序列的平稳性?
4.如何制作时间序列固定?
5.预测时间序列
有问题到百度搜索“大数据部落”就可以了
欢迎登陆官网:https://www.360docs.net/doc/fc9687063.html,/datablog
1.什么使时间序列特别?
顾名思义,TS是以固定时间间隔收集的数据点的集合。对这些进行分析以确定长期趋势,以便预测未来或执行其他形式的分析。但是什么使得TS与常规回归问题不同呢?有两件事:
1.这是时间依赖的。因此,在这种情况下,观察是独立的线性回归模型的基本假设不
成立。
2.随着趋势的增加或减少,大多数TS具有某种形式的季节性趋势,即特定时间范围
的特定变化。例如,如果你看到一件羊毛外套随着时间的推移而销售,你将会在冬
季找到更高的销售额。
由于TS的固有属性,分析它涉及各种步骤。这些将在下面详细讨论。让我们首先在Python中加载TS对象。我们将使用流行的AirPassengers数据集,可在此处下载。
请注意,本文的目的是让您熟悉TS的一般使用的各种技术。这里考虑的例子仅用于说明,我将重点关注广泛的主题,而不是做出非常准确的预测。
2. 加载和处理时间序列
Pandas有专门的库来处理TS对象,特别是datatime64 [ns]类,它存储时间信息并允许我们快速执行某些操作。让我们从启动所需的库开始:
import pandas as pd
import numpy as np
import matplotlib.pylab as plt
%matplotlib inline
from matplotlib.pylab import rcParams
rcParams['figure.figsize'] = 15, 6
有问题到百度搜索“大数据部落”就可以了
欢迎登陆官网:https://www.360docs.net/doc/fc9687063.html,/datablog
现在,我们可以加载数据集并查看列的一些初始行和数据类型:
data = pd.read_csv('AirPassengers.csv')
print data.head()
print '\n Data Types:'
print data.dtypes
该数据包含特定月份和该月旅行的乘客数量。但是这仍然不是作为TS对象读取的,因为数据类型是'object'和'int'。为了将数据作为时间序列读取,我们必须将特殊参数传递给read_csv命令:
有问题到百度搜索“大数据部落”就可以了
欢迎登陆官网:https://www.360docs.net/doc/fc9687063.html,/datablog
dateparse = lambda dates: pd.datetime.strptime(dates, '%Y-%m')
data = pd.read_csv('AirPassengers.csv', parse_dates=['Month'],
index_col='Month',date_parser=dateparse)
print data.head()
让我们逐一理解这些论点:
1.parse_dates:指定包含日期时间信息的列。如上所述,列名称为“Month”。
2.index_col:使用Pandas进行TS数据背后的一个关键思想是索引必须是描述日期
时间信息的变量。所以这个论点告诉pandas使用'Month'列作为索引。
3.date_parser:这指定一个将输入字符串转换为datetime变量的函数。默认情况下,
Pandas以“YYYY-MM-DD HH:MM:SS”格式读取数据。如果数据不是这种格式,则
必须手动定义格式。类似于此处定义的数据分析功能的东西可用于此目的。
现在我们可以看到数据有时间对象作为索引,#Passengers作为列。我们可以使用以下命令交叉检查索引的数据类型:
data.index
有问题到百度搜索“大数据部落”就可以了
欢迎登陆官网:https://www.360docs.net/doc/fc9687063.html,/datablog
注意dtype ='datetime [ns]'确认它是一个datetime对象。作为个人偏好,我会将列转换为Series对象,以防止每次使用TS时引用列名。请随意使用作为数据帧,这对您更有效。
ts = data[‘#Passengers’] ts.head(10)
在进一步讨论之前,我将讨论TS数据的一些索引技术。让我们首先选择Series对象中的特定值。这可以通过以下两种方式完成:
有问题到百度搜索“大数据部落”就可以了
欢迎登陆官网:https://www.360docs.net/doc/fc9687063.html,/datablog
#1. Specific the index as a string constant:
ts['1949-01-01']
#2. Import the datetime library and use 'datetime' function:
from datetime import datetime
ts[datetime(1949,1,1)]
两者都将返回值'112',这也可以从先前的输出确认。假设我们想要所有数据到1949年5月。这可以通过两种方式完成:
#1. Specify the entire range:
ts['1949-01-01':'1949-05-01']
#2. Use ':' if one of the indices is at ends:
ts[:'1949-05-01']
两者都会产生以下输出: