八、时间序列

一、日期和时间数据类型及工具

时间序列:datetime.datetime(2011-02-31),产生一个DatetimeIndex对象;
pd.DatetimeIndex()
时间范围: pd.date_range(start=‘4/1/2012’,periods=20)
时间戳: pd.Timestamp(‘2011-03-12 04:20’)

datetime以毫秒形式存储日期和时间,

字符串和datetime的相互转换
(1)字符串—>datetime: datetime.strptime(str,’%Y-%m-%d’) 知道已知格式进行日期解析
datetime—>字符串 : str(datetime) / datetime.strftime(‘%Y-%m-%d’)

(2)使用dateutil包中的parser.parse方法
from dateutil.parser import parse

(3) #pandas通常是用于处理成组日期的,不管这些日期是DataFrame的行还是列。(pd.to_datetime(str))

时间序列基础
pandas最基本的时间数据类型就是时间戳
(通常以python字符串或datetime对象表示)

日期的范围、频率以及移动
有时候需要用相对固定的频率对数据进行分析,比如每月、每天等。
pandas有一整套标准时间序列频率以及用于重采样、频率推断、生成固定频率日期范围的工具。只需调用resample.

WOM-2FRI 每月的第2周的星期五

锚点偏移量:时间序列不是均分分隔的
日期偏移:ts.shift(1/-1.freq=‘M’)
锚点滚动:offset=MonthEnd()
offset.rollforward(now) /backward

二、时区处理(pytz库)

1.
naive->本地化:ts.tz_localize(“ “) ts:时间Series序列
一旦时间序列被本地化到一个特定时区,就可以实现时区转换:tz_convert

2.时期
p=pd.Period(2007,freq=‘A-DEC’)
period_range()函数用于创建规则的时期范围

values=[‘2000103’,’200202’,’200301’]
index=pd.PeriodIndex(values,freq=’Q-DEC’) #PeriodIndex类的构造函数可以直接使用一组字符串

3.时期的频率转换:asfreq()
p=pd.Period(‘2017’,freq=‘A-DEC’)
p.asfreq(‘M’,how=‘end’) :一个时期Period对象

4.Timestamp和Period的互相转换:to_period() / to_timestamp(how=‘end’)

三、重采样及频率转换(resample())

重采样(resampling)指的是将时间序列从一个频率转换到另一个频率的过程。将高频率数据聚合到低频率成为降采样(downsampling),而将低频率数据转换到高频率成为升采样(uosampling)。并不是所有的重采样都能被划分到这两类中,比如将W-WED转换为W-FRI既不是降采样也不是升采样。

降采样:
在进行降采样时,应该考虑如下:
1. 各区间那便是闭合的(closed=‘right’)
2. 如何标记各个聚合面元,用区间的开头还是结尾(label=‘right’)

ohlc重采样:包括open,high,low,close四个值

由于时期指的是时间区间,所以升采样和降采样的规则就比较严格
在降采样中,目标频率必须是原频率的子时期
在升采样中,目标频率必须是原频率的超时期
如果不满足这些条件,就会引发异常,主要影响的是按季、年、周计算的频率。
例如,由Q-MAR定义的时间区间只能升采样为A-MAR、A-JUN等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值