008.Numpy日期时间和增量
1.Datetime64
- 从NumPy 1.7开始,数组数据类型本身开始支持日期时间功能,称为 “datetime64”
2.日期单位和时间单位
3.日期单位的创建
3.1字符串方式
- 以日为单位
- 以月为单位
- 以日为单位,时间为月,进行强制类型转换
- 日期单位+时间单位
- nat的创建形式
3.2 使用函数的创建方式
4. 安全投射
5.Timedelta64
- NumPy允许减去两个Datetime值,这个操作产生一个带有时间单位的数字。
- 由于NumPy的核心没有物理量系统,因此创建了timedelta64数据类型以补充datetime64。
- timedelta64的参数是一个数字,用于表示单位数,以及日期/时间单位
- 如 (D)ay, (M)onth, (Y)ear, (h)ours, (m)inutes, 或者 (s)econds。timedelta64数据类型也接受字符串“NAT”代替“非时间”值的数字。
5.1 使用方法
- 使用timedelta64的时候需要注意:
6.DataTime函数
6.1 busday
6.2 busday_offset
查看日历:2011-6-25为星期六,2011-6-26为星期六
- 对于roll=‘backward’ and roll='forward’的区别:
- 区别在非工作日上
- 如果起点是非工作日
- 当offset为0时,roll='backward’选择以前最近的工作日;roll='forward’选择未来最近的工作日
- 当offset为0时,roll='backward’选择以前最近的工作日;roll='forward’选择未来最近的工作日
- 当offset大于0时,roll='backward’选择未来的最近工作日+(offset-1);roll=’forward’选择未来最近的工作日+offset 如果遇到非工作日,还是照常跳过
- 如果起点是工作日,roll='backward’和roll='forward’得到的答案是一样的
- 如果起点是非工作日
- 区别在非工作日上
6.3 is_busy()
- 要测试datetime64值以查看它是否为有效日期
>>> np.is_busday(np.datetime64('2011-07-15')) # a Friday
True
>>> np.is_busday(np.datetime64('2011-07-16')) # a Saturday
False
>>> np.is_busday(np.datetime64('2011-07-16'), weekmask="Sat Sun")
True
>>> a = np.arange(np.datetime64('2011-07-11'), np.datetime64('2011-07-18'))
>>> np.is_busday(a)
array([ True, True, True, True, True, False, False], dtype='bool')
6.4 busday_count()
要查找指定日期范围内有效天数
>>> np.busday_count(np.datetime64('2011-07-11'), np.datetime64('2011-07-18'))
5
>>> np.busday_count(np.datetime64('2011-07-18'), np.datetime64('2011-07-11'))
-5