开发者学堂课程【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 可能用的不是很多。重采样中我们可以对数据执行很多的操作,这里现在只是单模块去讲这个东西,然后到时候用的时候我们就需要把很多东西都结合在一起了。