2. 时间点 Timestamp

  1. 时间点:Timestamp对象从Pythondatetime类继承,它表示时间轴上的一个点。

    1. pd.Timestamp(ts_input=<object object at 0x0000000001E8F340>, freq=None, tz=None,
    2. unit=None, year=None, month=None, day=None, hour=None, minute=None,
    3. second=None, microsecond=None, tzinfo=None, offset=None)

    参数:

    • ts_input:一个datetime-like/str/int/float,该值将被转换成Timestamp
    • freq:一个字符串或者DateOffset,给出了偏移量
    • tz:一个字符串或者pytz.timezone对象,给出了时区
    • unit:一个字符串。当ts_input为整数或者浮点数时,给出了转换单位
    • offset:废弃的,推荐使用freq
    • 其他的参数来自于datetime.datetime。它们要么使用位置参数,要么使用关键字参数,但是不能混用

    Timestamp_create

    属性有:

    • year/month/day/hour/minute/second/microsecond/nanosecond,这些属性都为整数
    • tzinfo:时区信息(默认为None),它是一个datetime.tzinfo对象

    • dayofweek/dayofyear/days_in_mounth/freqstr/quarter/weekofyear/...

    • value:保存的是UTC时间戳(自UNIX纪元1970年1月1日以来的纳秒数),该值在时区转换过程中保持不变

    Timestamp_property

    类方法有:

    • combine(date, time):通过datetime.datedatetime.time创建一个Timestamp
    • fromtimestamp(ts):通过时间戳创建一个Timestamp
    • now(tz=None):创建一个指定时区的当前时间。
    • doday(tz=None):创建一个指定时区的当前时间。
    • utcfromtimestamp(ts):从时间戳创建一个UTC Timestamp,其tzinfo=None
    • utcnow():创建一个当前的UTC Timestamp,其tzinfo=UTC

    Timestamp_cls_method

    方法有:

    • .astimezone(tz)/.tz_convert(tz):将一个tz-aware Timestamp转换时区
    • .isoformat(sep='T'):返回一个ISO 8601格式的字符串。
    • .normalize():将Timestamp调整到午夜(保留tzinfo
    • replace(**kwds):调整对应值,返回一个新对象
    • .to_period(self, freq=None):返回一个Period对象`
    • .tz_localize(self, tz, ambiguous='raise', errors='raise'):将一个tz-naive Timestamp ,利用tz转换为一个tz-aware Timestamp
    • .to_pydatetime(...):转换为python datetime对象
    • .to_datetime64(...):转换为numpy.datetime64对象
    • datetime.date/datetime.datetime继承而来的方法

    Timestamp_method0 Timestamp_method1

    默认情况下,pands中的Timestamptz-naive,即tz字段为NoneTimestamp提供了方便的时区转换功能。如果tz非空,则是tz-aware Timestamp。不同时区的时间可以比较,但是naive Timestamplocalized Timestamp无法比较。

    Timestamp的减法,要求两个Timestamp要么都是同一个时区下,要么都是tz-naive的。

  2. DateOffset对象:是一个表示日期偏移对象。Timestamp加一个日期偏移,结果还是一个Timestamp对象。其声明为:

    1. pd.DateOffset(n=1, normalize=False, **kwds)

    通常我们使用的是其子类(它们位于pandas.tseries.offsets中):

    • Day:日历日
    • BusinessDay:工作日

    • Hour:小时

    • Minute:分钟
    • Second:秒
    • Milli:毫秒
    • Micro:微秒
    • MonthEnd:每月最后一个日历日
    • BusinessMonthEnd:每月最后一个工作日

    • MonthBegin:每月第一个日历日

    • BusinessMonthBegin:每月第一个工作日

    • Week:每周几

    Day(2):表示两个工作日。

    DateOffset对象可以加在datetime/Timestamp对象上。如果是MonthEnd这种加上Timestamp,则第一次增量会将原日期向前滚动到符合频率规则的下一个日期。

    • 你可以通过DateOffset.rollforward(time_stamp)DateOffset.rollback(time_stamp)来显式地将日期向前或者向后滚动

    DateOffset

  3. 利用 str(dt_obj)函数或者datetime.strftime(format_str)方法,可以将datetime对象和Timestamp对象格式化为字符串。而利用datetime.strptime(dt_str,format_str)类方法,可以从字符串中创建日期。其中dt_str为日期字符串,如'2011-11-12'format_str为格式化字符串,如'%Y-%m-%d'

    • datetime.strptime是对已知格式进行日期解析的最佳方式。
    • 对于一些常见的日期格式,使用dateutil这个第三方包中的parser.parse(dt_str),它几乎可以解析所有的日期表示形式。
    • pandas.to_datetime()方法可以解析多种不同的日期表示形式,将字符串转换为日期。对于标准日期格式的解析非常快。如果发现无法解析(如不是一个日期),则返回一个NaTNot a Time),它是时间戳数据中的NA值。
  4. Timedelta对象:表示时间间隔。它等价于datetime.timedelta类。

    1. pd.Timedelta(value=<object object at 0x00000000004BF340>, unit=None, **kwargs)

    参数:

    • value:一个Timedelta对象,或者datetime.timedelta,或者np.timedelta64、或者一个整数,或者一个字符串。指定了时间间隔
    • unit:一个字符串,指明了当输入时整数时,其单位。可以为'D'/'h'/'m'/'s'/'ms'/'us'/'ns'
    • days/seconds/microseconds/nanoseconds:都是数值。给出了某个时间单位下的时间间隔

    方法:

    • to_timedelta64():返回一个numpy.timedelta64类型(按照纳秒的精度)
    • total_seconds():返回总的时间间隔,单位秒(精度为纳秒)
    • to_pytimedelta():返回一个datetime.timedelta对象

    属性:

    • components:返回各成分的命名元组
    • days/seconds/microseconds/nanoseconds:返回各个成分
    • delta:返回总的时常(纳秒计)

    一个时间间隔有天数、秒数等等属性。注意:所有的这些值与对应的单位相乘的和,才是总的时间间隔。

    两个Timestamp相减可以得到时间间隔Timedelta

    DateOffset也一定程度上表示时间间隔,但是DateOffset更侧重于按照某个固定的频率的间隔,比如一天、一个月、一周等。

    Timedelta