需要源码和PPT请点赞关注收藏后评论区留言私信~~~
Pandas的通用时间序列是不规则的,即时间序列的频率是不固定的。然而经常有需要处理固定频率的场景,如每天、每月等
因此,Pandas还提供了一整套标准的时间序列频率和工具用于重新采样、推断频率及生成固定频率的数据范围
1 日期范围
Pandas的通用时间序列是不规则的,即时间序列的频率是不固定的。然而经常有需要处理固定频率的场景,如每天、每月等。使用pd.date_range函数可以创建指定长度的DatetimeIndex
date_range函数创建DatetimeIndex索引
index = pd.date_range('2018-12-28','2019-1-10') index
在默认情况下,产生的DatetimeIndex索引的间隔为天,如果只传递一个起始或者结束如期,则必须传递一个用于生成范围的数字
date_range中指定开始日期和长度
index = pd.date_range(start = '2019-5-28',periods = 6) index
date_range中指定结束日期和长度
index = pd.date_range(end = '2019-5-28',periods = 6) index
2 频率和移位
pandas中的频率是由一个基础频率和一个乘数组成的。基础频率通常以一个字符串别名表示,比如”H”表示每小时。对于每个基础频率,都有一个被称为日期偏移量的对象与之对应。可以通过实例化日期偏移量来创建某种频率:在基础频率前面放上一个整数即可创建偏移量的倍数
基础时间序列频率(部分)
freq设置频率‘M
index = pd.date_range('2018-12-28','2019-3-10',freq = 'M') index
freq设置频率‘2H
index = pd.date_range(start = '2019-5-28',periods = 4,freq = '2H') index
设置频率字符串
index = pd.date_range(start = '2019-5-28',periods = 4,freq = '2H15T15S') index
移位”是指将日期按时间向前或向后移动。Series和DataFrame都有一个shift方法用于简单的前向或后向移位,而不改变索引
wdate = pd.Series(np.random.randn(4),index = pd.date_range('2019/1/1',periods = 4,freq = 'M')) print(wdate) wdate.shift(2)
这种单纯的移动不会修改索引,而是使部分数据被丢弃。如果在shift方法中传入频率参数,这样就是修改索引了
shift方法中传入频率参数修改索引
wdate.shift(2,freq = 'D')
3 时期
时期表示的是时间区间,如数天、数月或数年等。Period可以创建时期型的数据,传入字符串、整数或频率即可
利用period可以创建时期型数据
w = pd.Period(2019,freq = 'A-DEC') print(w) print(w+2)
PeriodIndex索引的用法
类似于pd.date_range,pd.period_range函数可以创建日期范围,PeriodIndex索引同样可以构造Series或DateFrame
wdate = pd.period_range('2019/1/1','2019/6/1',freq = 'M') pd.Series(np.arange(6),index = wdate)
Period和PeriodIndex对象可以通过asfreq方法转换频
p = pd.Period(2019,freq = 'A-FEB') print(p.asfreq('M',how = 'start')) print(p.asfreq('M',how = 'end'))
利用to_period方法可以将由时间戳索引的时间序列数据转换为以时期为索引
日期数据的转换
w = pd.date_range('2019/1/1','2019/6/1',freq = 'M') y = pd.Series(np.arange(5),index = w) print(y) ps = y.to_period() print(ps)
创作不易 觉得有帮助请点赞关注收藏~~~