【数据分析与可视化】时间序列重采样、降采样、升采样及平稳性检验详解(图文解释 附源码)

简介: 【数据分析与可视化】时间序列重采样、降采样、升采样及平稳性检验详解(图文解释 附源码)

需要源码和数据集请点赞关注收藏后评论区留言私信~~~

一、重采样、降采样、升采样

重采样是时间序列频率转换的过程,Pandas中的resample函数用于各种频率的转换工作,高频率聚合到低频率称为降采样,而低频率转换为高频率为升采样

1:重采样

resample方法的参数与说明见下表

将间隔为天的频率转换为间隔为月的频率

w = pd.date_range(start = '2018/6/1',periods = 100,freq = 'D')
y = pd.Series(np.arange(100),index = w)
print(y.head(8))
ps = y.resample('M').mean()
print(ps)

2:降采样

在降采样中,需要考虑closed和label参数,分别表示哪边区间是闭合的,哪边是标记的

降采样示例如下

wdate = pd.date_range(start = '2019/5/1',periods = 10,freq = 'D')
w = pd.Series(np.arange(10),index = wdate)
print(w)
w.resample('3D',closed = 'right',label = 'right').sum()

3:升采样

 在升采样中主要是数据的插值,即对缺失值进行填充,填充方法与fillna相似。

升采样示例

ydata = [datetime(2019,6,1),datetime(2019,6,6)]
y = pd.Series([1,6],index = ydata)
print(y)
y.resample('D').ffill()

二、时间序列的平稳性检验

在做时间序列分析时,经常要对时间序列进行平稳性检验。用Python来进行平稳性检验主要有时序图检验、自相关图检验以及构造统计量进行检验3种方法

1:时序图检验

时序图就是普通的时间序列图,即以时间为横轴,观察值为纵轴进行检验。利用时序图可以粗略观察序列的平稳性

首先打印数据 如下图

然后利用时序图检验稳定性

import pandas as pd
import matplotlib.pyplot as plt
# import matplotlib.dates as mdates
# from statsmodels.graphics.tsaplots import plot_acf
data = pd.read_excel('.\data\Bike_count.xls', index_col='Date', parse_dates=True)
fig = plt.figure(figsize=(12,6), dpi=100)
# ax = fig.add_subplot(111)
from matplotlib.dates import DateFormatter
plt.gca().xaxis.set_major_formatter(DateFormatter('%m-%d-%H'))
# #自动旋转X轴的刻度,适应坐标轴
# plt.gcf().autofmt_xdate()
# ax.xaxis.set_major_formatter(mdates.DateFormatter('%H:%M'))
plt.xticks(pd.date_range(data.index[0],data.index[-1],freq='3H'), rotation=45)
plt.plot(data['Total'])

从时序图可以看出 数据走势没有明显的趋势或者周期,基本可以视为平稳序列,但还需要利用自相关图进一步验证

2:自相关图检验

平稳序列通常具有短期相关性,即随着延迟期数k的增加,平稳序列的自相关系数会很快地衰减向零,而非平稳序列的自相关系数的衰减速度会比较慢。画自相关图用到的是statsmodels中的plot_acf方法。自相关图中横轴表示延迟期数,纵轴表示自相关系数

 

from statsmodels.graphics.tsaplots import plot_acf
plt.rcParams['font.family'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plot_acf(data.Total) #生成自相关图
plt.xlabel('延迟期数')
plt.ylabel('自相关系数')

从自相关图可以看出,该序列的自相关图经过波动衰减为0,可以视作平稳序列

3:构造统计量检验

利用绘图判断序列的平稳性比较直观,但不够精确,ADF(Augmented Dickey-Fuller)法直接通过假设检验的方式来验证平稳性。ADF的原假设(H0)和备择假设(H1)如下

H0:具有单位根,属于非平稳序列;

H1:没有单位根,属于平稳序列

Python中可以使用statsmodels中的adfuller方法进行ADF检验,直接输入数据,即可返回7个数值。其中的第一个返回值adf就是ADF方法的检验结果,这个值理论上越负越能拒绝原假设;第二个返回值pvalue以常用的判断标准值0.05作为参考,若其值大于0.05,说明支持原假设,反之拒绝原假设,表明该序列是一个平稳序列

测试结果如下

from statsmodels.tsa.stattools import adfuller
data_result = adfuller(data.Total) #生成adf检验结果
print('The ADF Statistic of data: %f' % data_result[0])
print('The p value of data: %f' % data_result[1])

创作不易 觉得有帮助请点赞关注收藏~~~

相关文章
|
1月前
|
数据可视化 数据挖掘 Python
python数据分析和可视化【3】体检数据分析和小费数据分析
python数据分析和可视化【3】体检数据分析和小费数据分析
44 0
|
1月前
|
数据可视化 数据挖掘 Python
python数据分析和可视化【1】
python数据分析和可视化【1】
41 0
|
1月前
|
数据采集 数据可视化 数据挖掘
利用Python进行数据分析与可视化
【2月更文挑战第25天】 在当今数据驱动的时代,能够有效地分析和可视化数据变得至关重要。本文将深入探讨如何运用Python语言及其强大的库,包括Pandas、NumPy、Matplotlib和Seaborn,来执行数据处理、分析以及生成直观的图表。我们将通过一个实际案例,从原始数据集的加载开始,逐步展示如何清洗、处理数据,并最终通过可视化手段洞察数据背后的故事。
|
1月前
|
数据采集 数据可视化 数据挖掘
深入浅出:使用Python进行数据分析与可视化
在信息爆炸的时代,数据已成为企业和研究机构不可或缺的宝贵资源。如何从海量数据中提取有价值的信息,是当下技术界面临的重大挑战之一。本文将引导读者深入了解如何利用Python语言,特别是其强大的数据处理库Pandas和可视化库Matplotlib,来进行有效的数据分析与结果呈现。我们将通过一个实际案例,展示从数据清洗到最终数据可视化的整个过程,使读者能够掌握将理论应用于实践的能力,进而在自己的工作和研究中发挥重要作用。
|
1月前
|
数据可视化 数据挖掘 BI
python数据分析和可视化【2】鸢尾花数据分析
python数据分析和可视化【2】鸢尾花数据分析
35 0
|
2月前
|
机器学习/深度学习 数据可视化 数据挖掘
Python技术应用:数据分析与可视化的利器
【2月更文挑战第7天】在当今信息爆炸的时代,数据分析和可视化已经成为各行业的核心竞争力。Python作为一种简洁、高效的编程语言,为数据分析带来了全新的可能性。本文将介绍Python在数据分析和可视化领域的应用,探讨其在实际工作中的重要性和价值。
25 2
|
10天前
|
数据采集 数据可视化 数据挖掘
SciPy在数据分析中的应用:从数据清洗到可视化
【4月更文挑战第17天】# SciPy在数据分析中的应用:从数据清洗到可视化。文章探讨了SciPy在数据清洗(使用NumPy处理缺失值和异常值)、数据分析(描述性统计和模型拟合)以及数据可视化(结合Matplotlib和Seaborn进行图表绘制)中的作用。SciPy与其他Python库结合,为完整的数据分析流程提供了强大支持。
|
19天前
|
人工智能 数据可视化 数据挖掘
【python】Python国内GDP经济总量数据分析可视化(源码+报告)【独一无二】
【python】Python国内GDP经济总量数据分析可视化(源码+报告)【独一无二】
|
19天前
|
机器学习/深度学习 数据可视化 数据挖掘
【python】双十一美妆数据分析可视化 [聚类分析/线性回归/支持向量机](代码+报告)【独一无二】
【python】双十一美妆数据分析可视化 [聚类分析/线性回归/支持向量机](代码+报告)【独一无二】
|
20天前
|
机器学习/深度学习 数据可视化 数据挖掘
利用Python进行数据分析与可视化:从入门到精通
本文将介绍如何使用Python语言进行数据分析与可视化,从基础概念到高级技巧一应俱全。通过学习本文,读者将掌握Python在数据处理、分析和可视化方面的核心技能,为实际项目应用打下坚实基础。