3. 时间段 Period
Period
表示一个标准的时间段(如某年,某月)。时间段的长短由freq
属性决定。pd.Period(value=None, freq=None, ordinal=None, year=None, month=None,
quarter=None, day=None, hour=None, minute=None, second=None)
参数:
value
:一个Period
对象或者字符串(如'4Q2016'
),它表示一个时区段。默认为None
freq
:一个字符串,表示区间长度。可选的值从下面函数获取:pandas.tseries.frequencies._period_code_map.keys()
pandas.tseries.frequencies._period_alias_dictionary()
- 其他的参数和前面的其他类的构造函数类似。其中
quarter
表示季度。
属性:
day/dayofweek/dayofyear/hour/minute/quarter/second/
year/week/weekday/weekofyear/year
:对应的属性end_time
:区间结束的Timestamp
。start_time
:区间开始的Timestamp
freq
方法:
.asfreq(freq,how)
:转换为其他区间。其中freq
为字符串。how
可以为'E'/'end'
,表示包含区间结束;'S'/'start'
表示包含区间开始。.now(freq)
:返回当期日期对应freq
下的Period
strftime(format)
:给出Period
的格式化字符串表示to_timestamp(freq,how)
:转换为Timestamp
。
pands
中的频率是由一个基础频率和一个倍数组成。- 基础频率通常以一个字符串别名表示,如
'M'
表示每月,'H'
表示每小时。 - 对于每个基础频率,都有一个
DateOffset
对象与之对应。如pandas.tseries.offsets
中的Hour/Minute
。Hour(4)
表示日期偏移为 4小时。 - 倍数为基础频率之前的数字,如
'4H'
。也可以组合多个频率4H30min
有些频率描述的时间点并不是均匀间隔的。如
'M'
就取决于每个月的天数。下面是一些常用的基础频率'D'
:偏移量类型为Day
,为每日历日'B'
:偏移量类型为BusinessDay
,为每工作日'H'
:偏移量类型为Hour
,为每小时'T'
或者'min'
:偏移量类型为Minute
,为每分钟'S'
:偏移量类型为Second
,为每秒'L'
或者'ms'
:偏移量类型为Milli
,为每毫秒'U'
:偏移量类型为Micro
,为每微秒'M'
:偏移量类型为MonthEnd
,为每月最后一个日历日'BM'
:偏移量类型为BusinessMonthEnd
,为每月最后一个工作日'MS'
:偏移量类型为MonthBegin
,为每月第一个日历日'BMS'
:偏移量类型为BusinessMonthBegin
,为每月第一个工作日'W-Mon'...'W-TUE
:偏移量类型为Week
,为指定星期几(MON/TUE/WED/THU/FRI/SAT/SUN
)开始算起,每周
- 基础频率通常以一个字符串别名表示,如
调用
Timestamp
对象的.to_period(freq)
方法能将时间点转化为包含该时间点的时间段。Period
的.asfreq()
方法可以实现时间段的频率转换。创建
Period
时,我们可以传入一个Timestamp
的各分量(由year/month...
等提供)。创建的Period
是包含该时刻,且指定频率。在使用Timestamp.to_period(freq)
也是如此。给定一个频率的
Period
,如果转换到更低频的Period
,则非常简单:返回指定频率下的包含本Period
的那个Period
即可。如果想转换到更高频的Period
,则由于在本Period
下,对应了很多个高频的Period
,则返回哪一个,由how
参数指定:how=S
:返回最开头的那个Period
how=E
:返回最末尾的那个Period
而
Period.to_timestamp(freq,how)
方法中,我们首先进行时间段的频率转换,然后提取该频率的Period
开始处的Timestamp
如果两个
Period
对象有相同的频率,则它们的差就是它们之间的单位数量。