3. 时间段 Period

  1. Period表示一个标准的时间段(如某年,某月)。时间段的长短由freq属性决定。

    1. pd.Period(value=None, freq=None, ordinal=None, year=None, month=None,
    2. 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:区间结束的Timestampstart_time:区间开始的Timestamp
    • freq

    方法:

    • .asfreq(freq,how):转换为其他区间。其中freq为字符串。how可以为'E'/'end',表示包含区间结束;'S'/'start'表示包含区间开始。
    • .now(freq):返回当期日期对应freq下的Period
    • strftime(format):给出Period的格式化字符串表示
    • to_timestamp(freq,how):转换为Timestamp

    Period

  2. pands中的频率是由一个基础频率和一个倍数组成。

    • 基础频率通常以一个字符串别名表示,如'M'表示每月,'H'表示每小时。
    • 对于每个基础频率,都有一个DateOffset对象与之对应。如pandas.tseries.offsets中的Hour/MinuteHour(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)开始算起,每周

  3. 调用Timestamp对象的.to_period(freq)方法能将时间点转化为包含该时间点的时间段。 Timestamp_to_period

  4. Period.asfreq()方法可以实现时间段的频率转换。 Period_visio

    创建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_asfreq

  5. 如果两个Period对象有相同的频率,则它们的差就是它们之间的单位数量。