第十章 时间序列
日期和时间数据类型及工具
- datetime 以毫秒形式存储日期和时间
字符串和datetime的互相转换
- str:将datetime对象和pandas的Timestamp对象转换为字符串
- strptime:将字符串转化为日期
日期的范围、频率以及移动
生成日期范围
- date_range
index = pd.date_range('4/1/2012','6/1/2012')
# 默认按天计算
pd.date_range(start='4/1/2012', periods=20)
pd.date_range(end='6/1/2012', periods=20)
#传入频率,得到符合要求的日期
pd.date_range('1/1/2000', '12/1/2000', freq='BM') #'BM'表示bussiness end of month,即每月最后一个工作日
频率和日期偏移量
pandas中频率由一个基础频率和一个乘数组成。
hour = pd.Hour()
four_hour = Hour(4)
minutes_150 = Hour(2) + Minute(30)
#也可传入频率字符串
pd.date_range('1/1/2000', periods=10, freq='1h30min')
- WOM是一个非常实用的频率类
# 获得“每月第三个星期五”
pd.date_range('1/1/2000', periods=10, freq='WOM-3FRI')
移动(超前和滞后)数据
移动:沿着时间轴将数据前移或者后移
- shift
通常计算一个时间序列或多个时间序列中的百分比变化
由于单纯的移位操作不会修改索引,因此部分数据会被丢弃。如果频率一致,则可以将其传给shift以便实现对时间戳进行移位而不是对数据进行简单移位。
重采样及频率转换
- resampling
将时间序列从一个频率转换到另一个频率的过程
rng = pd.date_range('1/1/2000', periods=100, freq='D')
ts = pd.Series(np.random.randn(len(rng)), index=rng)
ts.resample('M').mean()
# OHLC重采样
ts.resample('M').ohlc()
网友评论