1.时间序列
不管在哪个领域中(金融学、经济学、生态学、神经科学、物理学等),时间序列数据都是一种重要的结构化数据形式,在多个时间点观察或者测量到的任何事物都可以形成一段时间序列。很多时间序列是固定频率的,也就是说,数据点是根据某种规律定期出现的(比如每15分钟、每5分钟、每一个月等)。时间序列也可以是不定期的。时间序列数据的意义取决于具体的应用场景,主要有以下几种:
- 时间戳(timestamp):特定的时刻
- 固定时期(period):如2019年1月或者2019年全年
- 时间间隔(interval):由起始和结束时间戳表示。时期也可以看做间隔的特例
- 实验或过程时间,每个时间点都是相对于特定起始时间的一个度量。例如,从放入烤箱时起,每秒钟饼干的直径。
下面主要从前3中时间序列来讲解,就目前而言,前三种中时间戳的应用更加常见
2.日期和事件数据类型及工具
Python标准库包含用于时间(time)和日期(date)数据的数据类型,而且还有日历方面的功能,我会主要用到datetime、time以及calendar模块。datetime.datetime(也可以简写为datatime)是用的最多的数据类型:
from datetime import datetime
now = datetime.now()
print(now)
print(now.year)
print(now.month)
print(now.day)
"""
2019-03-25 13:07:37.236060
2019
3
25
"""
- datetime以毫秒形式存储日期和时间。datetime.timedelta表示两个datetime对象之间的时间差:
delta = datetime(2015,1,7) - datetime(2013,3,4,8,20)
print(delta)
print(delta.days)
print(delta.seconds)
"""
673 days, 15:40:00
673
56400
"""
- 可以给datetime对象加上或者减去一个或多个timedelta,这样会产生一个新对象:
from datetime import timedelta
start = datetime(2015,1,7)
s = start + timedelta(12)
print(s)
a = start - 2*timedelta(3)
print(a)
"""
2015-01-19 00:00:00
2015-01-01 00:00:00
"""
- datetime模块中的数据类型参见下表,虽然重点讲解部分是pandas数据类型和高级时间序列处理,但是在实际工作中可定会在Python的其他地方遇到有关datetime的数据类型。
类型 | 说明 |
---|---|
date | 以公历形式存储日历日期(年月日) |
time | 将时间存储为时、分、秒、毫秒 |
datetime | 存储日期和时间 |
timedelta | 表示两个datetime值之间的差(日、秒、毫秒) |
3.字符串和datetime的相互转换
利用str或strftime方法(传入一个格式化字符串),datetime对象和pandas的timestamp对象可以被格式化为字符串:
stamp = datetime(2015,1,7)
print(str(stamp))
"""
2015-01-07 00:00:00