文章目录
一、时序中的基本对象
概念 | 单元素类型 | 数组类型 | pandas数据类型 |
---|---|---|---|
Date times | Timestamp | DatetimeIndex | datetime64[ns] |
Time deltas | Timedelta | TimedeltaIndex | timedelta64[ns] |
Time spans | Period | PeriodIndex | period[freq] |
Date offsets | DateOffset | None | None |
二、时间戳
1. Timestamp的构造及属性
- 单个时间戳通过
pd.Timestamp
实现,一般来讲常见的日期格式能够被成功转换 - 单元素类型为
Timestamp
时,可以通过year,month,day,hour,min,second
来获取对应的具体数值 datetime64[ns]
的精度时纳秒,用64为存储,则时间范围在585年之间,可以通过pd.Timestamp.max和pd.Timestamp.min
来获取时间戳的范围
2. Datetime序列的生成
- 一组时间戳可以组成时间序列,可以用
to_datetime和date_range
来生成,to_datetime
能狗酱一列时间戳格式的对象转换成为datetime64[ns]
类型的时间序列 - 如果时间戳格式不满足时,可以通过强制使用
format
进行匹配 - 如果是非
pandas
内部的Series
,因此返回的是DatetimeIndex
,如果想要转为datetime64[ns]
的序列,需要显式用Series
转化 date_range
是一种生成连续间隔时间的一种方法,其重要的参数为start, end, freq, periods
,它们分别表示开始时间,结束时间,时间间隔,时间戳个数- 改变序列采样频率的方法
asfreq
,它能够根据给定的freq
对序列进行类似于reindex
的操作,新的Index值为缺失
3. dt对象
- 如同
category, string
的序列上定义了cat, str
来完成分类数据和文本数据的操作,在时序类型的序列上定义了 dt 对象来完成许多时间序列的相关操作 - 对于
datetime64[ns]
类型而言的操作有:取出时间相关的属性、判断时间戳是否满足条件、取整操作
- 取出时间相关的常用属性包括:
date, time, year, month, day, hour, minute, second, microsecond, nanosecond, dayofweek, dayofyear, weekofyear, daysinmonth, quarter
,其中daysinmonth, quarter
分别表示该月一共有几天和季度dayofweek
,它返回了周中的星期情况,周一为0、周二为1month_name, day_name
返回英文的月名和星期名,注意它们是方法而不是属性- 判断时间戳是否满足条件:
is_year_start,is_year_end
- 取整操作:取整操作包含
round, ceil, floor
,它们的公共参数为freq
,常用的包括H, min, S
(小时、分钟、秒)
4. 时间戳的切片与索引
如果想要选出某个子时间戳序列,第一类方法是利用 dt 对象和布尔条件联合使用,另一种方式是利用切片,后者常用于连续时间戳
三、时间差
1. Timedelta的生成
间差可以理解为两个时间戳的差,可以通过 pd.Timedelta
来构造
生成时间差序列的主要方式是 pd.to_timedelta
,其类型为 timedelta64[ns]
与 date_range
一样,时间差序列也可以用 timedelta_range
来生成,它们两者具有一致的参数
对于 Timedelta
序列,同样可以定义 dt 对象,dt主要定义的属性包括 days, seconds, mircroseconds, nanoseconds
,它们分别返回了对应的时间差特征。需要注意的是,这里的 seconds
不是指单纯的秒,而是对天数取余后剩余的秒数,如果想要直接得到对应的秒数total_seconds
2. Timedelta的运算
与标量的乘法运算、与时间戳的加减法运算、与时间差的加减法与除法运算:
四、日期偏置
1. Offset对象
Offset
对象在 pd.offsets
中被定义
2. 偏置字符串
几乎每一个 Offset
对象绑定了日期偏置字符串( frequencies strings/offset aliases
),可以指定 Offset
对应的字符串来替代使用
五、时序中的滑窗与分组
1. 滑动窗口
时序的滑窗函数,即把滑动窗口用 freq
关键词代替
对于 shift
函数而言,作用在 datetime64
为索引的序列上时,可以指定 freq
单位进行滑动
datetime64[ns]
的序列进行 diff
后就能够得到 timedelta64[ns]
的序列,这能够使用户方便地观察有序时间序列的间隔
2. 重采样
重采样对象resample
与groupby
的用法相似。没有内置定义函数是可以用apply
方法进行自定义
索引一般是取组的第一个时间戳,但 M, A, Q, BM, BA, BQ, W
这七个是取对应区间的最后一个时间戳