时间序列操作|学习笔记

简介: 快速学习时间序列操作

开发者学堂课程【Python 常用数据科学库:时间序列操作】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/546/detail/7488


时间序列操作

内容介绍

一、从时间序列中取数据

二、时间序列的重采样

三、画时间序列


一、从时间序列中取数据

1、有这样的时间序列之后,要从这个数据中提取数据, 在 data 里要指定一些索引的,可以直接用 pandas 当索引。随便指定一天,就是从一个时间的切片到另外一个时间切片,这个数据就取到了,然后就是用 time step 取数据的切片

data[pd.Timestamp(‘2012-01-01 09:00’):pd. Timestamp(‘2012-01-01 19:00’)]

不加这个东西默认也会做这样转换,数据也会取出来。所以说当指定以时间为索引的时候,也可以直接把这个数据取出来。

2、.tail 相当于取最后的数据,比如取最后十个数据,可以取到从12年12月31到这个13年的数据。现在我想取所有13年数据, data 里直接指定一个2013就可以了:date[‘2013’],这就是说怎么样把这个数据从哪年到哪年取出来。比如想取这个2012年1月份到2012年3月份,直接用 data 加日期

data[‘2012-01:’2012-03’’]

执行所有数据也能取出来。对时间操作来说也是有这样索引和一个切片,可以直接把时间序列指定出来,还可以用布尔类型索引,所以在 data 当中,在 index 值当中指定一个月份,想把所有的月份都取出来,不管是哪年的,就把1月份取出来

data[data.index.month==1]

执行一下, 09年的1月份一直到12年13年1月份都打印出来了。比如想找具体的一个日子,可以在 index 值当中把具体的日子找出来,然后用这样一个布尔类型的索引去进行一个时间序列判断,这个也是可以的。

3、比如在数据当中,8点~12点单独拿出来,然后12点~3点我再单独拿出来,把数据分成一块一块的,然后用中文一起去分析。这也可以,就是在 data 里,  index  里不光有月份还有小时,把小时设置成在8点和12点之间,指定这样一个数。

data[(data.index.hour>8 & (data.index.hour<12)]

接下来得到一个结果,所有数据都是8点~12点之间,我们可以按照这样的模式去把数据进行切分,可以切分成一个一个的小块,这一个个小块便于我们进行主板块的分析。到这里不光可以这么写,还有一种写法 between_time,然后把两个时间点写进去,比如8点开始,然后到这个12点

data.between_time(’08:00’,’12:00’)

也是可以把这个数据拿出来。这个数据跟上面数据是一致的,只不过上一个是不包含12点的,下面的会包含12点的数据,这个就是对数据怎样进行一个操作。  


二、时间序列的重采样

1、比如说现在的一个数据, 09年的1月1号, 3点、6点、9点、12点,都有一些指标值,现在想统计的是变了,后面指标值现在就相当于它在某一时刻具体的值,但是想看的就是09年1月1号的平均值,09年1月2号的平均值,1月3号的平均值,想执行这样一个操作,相当于把这些观测值求一个平均,这个就叫做时间序列的重采样。这个就是一个 resample 操作,你可以指定按照什么样的方式去重采样,按照天的方式,然后去计算它的一个均值

data.resample(‘D’).mean().head()

原来这是1月1号有一堆时间点,1月2号有一个有一堆时间点,但是现在执行了这样的重采样,并且让重采样执行是按照一天为单位,算了这样一个均值,然后得到一个结果。接下来结果就是1月1号、1月2号、1月3号,它就是以天为单位,而不是说以某一天的某一个时间点为单位,相当于是这样一个意思。

2、然后 resample 这个模块下,去指定.mean 操作,其实在这个模式下,它默认的一个操作也是 .mean ,只不是在这里我们就加上一个 .mean,默认会帮我们去做它的均值。只要在这里再指定一个参数,指定以天为单位,并且指定 how 等于 mean 值,然后再 .head

data.resample(‘D’,how=’mean’).head()

得到的结果都是一样。

3、在这个过程当中,不光可以指定一个值,还可以指定一个 max 值,比如说1月1日,那么多时间节点最大的时间节点是什么,这样方便我们进行统计分析。然后这里按照一天去算了这样的事,按照多天也是可以的,指定3 day,现在以三天为单位

data.resample(‘3D’).mean().head()

又得到了一个新的结果。这就是在进行时间重采样的过程当中,可以指定很多种操作方式,这里指定了一个m,相当于是以这个月份为单位又进行了一个进行统计。

data.resample(‘M’).mean().head()

三、画时间序列

1、在这里对于这个时间序列,我们可以直接把它的图给画出来,.mean 操作之后,还有这样的操作 .plot,相当于直接去画这样的图。

data.resample(‘M’).mean().head().plot

再执行一下,它就会把这个图直接画出来,pandas 里可以直接调.plot,可以直接画图,这是最简单的一种画图的方式。之后还会说很多的画图方式, pandas 可能用的不是很多。重采样中我们可以对数据执行很多的操作,这里现在只是单模块去讲这个东西,然后到时候用的时候我们就需要把很多东西都结合在一起了。

相关文章
|
10月前
|
机器学习/深度学习 数据可视化 算法
数据处理方法—— 7 种数据降维操作 !!
数据处理方法—— 7 种数据降维操作 !!
282 0
|
2月前
|
机器学习/深度学习 存储 设计模式
特征时序化建模:基于特征缓慢变化维度历史追踪的机器学习模型性能优化方法
本文探讨了数据基础设施设计中常见的一个问题:数据仓库或数据湖仓中的表格缺乏构建高性能机器学习模型所需的历史记录,导致模型性能受限。为解决这一问题,文章介绍了缓慢变化维度(SCD)技术,特别是Type II类型的应用。通过SCD,可以有效追踪维度表的历史变更,确保模型训练数据包含完整的时序信息,从而提升预测准确性。文章还从数据工程师、数据科学家和产品经理的不同视角提供了实施建议,强调历史数据追踪对提升模型性能和业务洞察的重要性,并建议采用渐进式策略逐步引入SCD设计模式。
142 8
特征时序化建模:基于特征缓慢变化维度历史追踪的机器学习模型性能优化方法
|
5月前
|
机器学习/深度学习 人工智能 测试技术
VisionTS:基于时间序列的图形构建高性能时间序列预测模型,利用图像信息进行时间序列预测
构建预训练时间序列模型的主要挑战在于获取高质量、多样化的时间序列数据。目前有两种方法:迁移学习LLM(如GPT-4或Llama)和从零训练。尽管迁移学习可行,但效果有限;从零训练则依赖大量数据,如MOIRAI、TimesFM和TTM等模型所示。为解决这一难题,研究人员提出利用图像数据进行时间序列预测。
451 10
VisionTS:基于时间序列的图形构建高性能时间序列预测模型,利用图像信息进行时间序列预测
时间序列分析实战(九):时序的协整关系检验
时间序列分析实战(九):时序的协整关系检验
|
10月前
|
vr&ar
时间序列分析实战(十):ARIMAX时序的协整动态模型
时间序列分析实战(十):ARIMAX时序的协整动态模型
|
7月前
|
数据采集 存储 数据可视化
R语言时间序列分析:处理与建模时间序列数据的深度探索
【8月更文挑战第31天】R语言作为一款功能强大的数据分析工具,为处理时间序列数据提供了丰富的函数和包。从数据读取、预处理、建模到可视化,R语言都提供了灵活且强大的解决方案。然而,时间序列数据的处理和分析是一个复杂的过程,需要结合具体的应用场景和需求来选择合适的方法和模型。希望本文能为读者在R语言中进行时间序列分析提供一些有益的参考和启示。
|
7月前
|
Python
【Python】如何判断时间序列数据是否为平稳时间序列或非平稳时间序列?
本文介绍了如何通过观察均值和方差的变化、ADF单位根检验、KPSS检验以及差分操作来判定时间序列数据是否为平稳或非平稳,并提供了Python代码示例进行实际检验。
204 0
【Python】如何判断时间序列数据是否为平稳时间序列或非平稳时间序列?
|
10月前
|
运维 算法 C++
R语言时间序列分解和异常检测方法应用案例
R语言时间序列分解和异常检测方法应用案例
|
10月前
R语言混合时间模型预测对时间序列进行点估计
R语言混合时间模型预测对时间序列进行点估计
|
10月前
|
运维 算法 C++
时间序列分解和异常检测方法应用案例
时间序列分解和异常检测方法应用案例