2. 时间点 Timestamp
时间点:
Timestamp
对象从Python
的datetime
类继承,它表示时间轴上的一个点。pd.Timestamp(ts_input=<object object at 0x0000000001E8F340>, freq=None, tz=None,
unit=None, year=None, month=None, day=None, hour=None, minute=None,
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
。它们要么使用位置参数,要么使用关键字参数,但是不能混用
属性有:
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日以来的纳秒数),该值在时区转换过程中保持不变
类方法有:
combine(date, time)
:通过datetime.date
和datetime.time
创建一个Timestamp
fromtimestamp(ts)
:通过时间戳创建一个Timestamp
now(tz=None)
:创建一个指定时区的当前时间。doday(tz=None)
:创建一个指定时区的当前时间。utcfromtimestamp(ts)
:从时间戳创建一个UTC Timestamp
,其tzinfo=None
utcnow()
:创建一个当前的UTC Timestamp
,其tzinfo=UTC
方法有:
.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
继承而来的方法
默认情况下,
pands
中的Timestamp
是tz-naive
,即tz
字段为None
。Timestamp
提供了方便的时区转换功能。如果tz
非空,则是tz-aware Timestamp
。不同时区的时间可以比较,但是naive Timestamp
和localized Timestamp
无法比较。Timestamp
的减法,要求两个Timestamp
要么都是同一个时区下,要么都是tz-naive
的。DateOffset
对象:是一个表示日期偏移对象。Timestamp
加一个日期偏移,结果还是一个Timestamp
对象。其声明为: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)
来显式地将日期向前或者向后滚动
利用
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()
方法可以解析多种不同的日期表示形式,将字符串转换为日期。对于标准日期格式的解析非常快。如果发现无法解析(如不是一个日期),则返回一个NaT
(Not a Time
),它是时间戳数据中的NA
值。
Timedelta
对象:表示时间间隔。它等价于datetime.timedelta
类。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
更侧重于按照某个固定的频率的间隔,比如一天、一个月、一周等。