时间区间和区间算术


时间区间和区间算术

时间区间表示的是时间范围,比如一些天、一些月、一些季度或者是一些年。

在这个例子中,Period对象表示的是从2007年1月1日到2007年12月31日(包含在内)的时间段。在时间段上增加或减去整数可以方便地根据它们的频率进行移位。

如果两个区间拥有相同的频率,则它们的差是它们之间的单位数:

使用period_range函数可以构造规则区间序列:

PeriodIndex类存储的是区间的序列,可以作为任意pandas数据结构的轴索引:

字符串数组,也可以使用PeriodIndex类:

1、区间频率转换

使用asfreq可以将区间和PeriodIndex对象转换为其他的频率。例如,假设我们有一个年度区间,并且想要在一年的开始或结束时将其转换为月度区间。

可以将Period(‘2007’, ‘A-DEC’)看作一段时间中的一种游标,将时间按月份划分。对于除十二月以外的一个月结束的财政年度,相应的每月分期是不同的:

当从高频率向低频率转换时,pandas根据子区间的”所属”来决定父区间。

完整的PeriodIndex对象或时间序列可以按照相同的语义进行转换:

2、季度区间频率

季度数据是会计、金融和其他领域的标准。很多季度数据是在财年结尾报告的,通常是一年12个月中的最后一个日历日或工作日。因此,由于是财年结尾,区间2012Q4有着不同的意义。

因此,做简单的区间算术是可行的,例如,要获取在季度倒数第二个工作日下午4点的时间戳,可以这么做:

3、将时间戳转换为区间(以及逆转换)

通过时间戳索引的Series和DataFrame可以被to_period方法转换为区间:

由于区间是非重叠时间范围,一个时间戳只能属于给定频率的单个区间。尽管默认情况下根据时间戳推断出新PeriodIndex的频率,但可以指定任何想要的频率。

使用to_timestamp可以将区间再转换为时间戳:

4、从数组生成PeriodIndex

固定频率数据集有时存储在跨越多列的时间范围信息中。例如,在这个宏观经济数据集中,年份和季度在不同列中:

通过将这些数组和频率传递给PeriodIndex,可以联合这些数组形成DataFrame的索引: