Python Numpy库datetime类型的处理详解


Posted in Python onJuly 13, 2019

前言

关于时间的处理,Python中自带的处理时间的模块就有time 、datetime、calendar,另外还有扩展的第三方库,如dateutil等等。通过这些途径可以随心所欲地用Python去处理时间。当我们用NumPy库做数据分析时,如何转换时间呢?

在NumPy 1.7版本开始,它的核心数组(ndarray)对象支持datetime相关功能,由于'datetime'这个数据类型名称已经在Python自带的datetime模块中使用了, NumPy中时间数据的类型称为'datetime64'。

单个时间格式字符串转换为numpy的datetime对象,可使用datetime64实例化一个对象,如下所示:

#时间字符串转numpy.datetime64
datetime_nd=np.datetime64('2019-01-01')
print(type(datetime_nd))#<class 'numpy.datetime64'>

反过来numpy的datetime对象转换为时间格式字符串,可使用datetime_as_string()函数,如下所示:

#numpy.datetime64转时间字符串
datetime_str=np.datetime_as_string(datetime_nd)
print(type(datetime_str))#<class 'numpy.str_'>

从时间格式字符串数组去创建numpy的datetime对象数组(array)时,可以直接使用numpy.array()函数,指定dtype为'datetime64',这样的话数组中的元素为'datetime64'类型,如下所示:

datetime_array = np.array(['2019-01-05','2019-01-02','2019-01-03'], dtype='datetime64')
print(datetime_array)#['2019-01-05' '2019-01-02' '2019-01-03']
print(type(datetime_array))#<class 'numpy.ndarray'>
print(type(datetime_array[0]))#<class 'numpy.datetime64'>

也可以通过numpy.arange()函数,给定时间起始范围去创建numpy的datetime对象数组(array),指定dtype为'datetime64'时默认以日为时间间隔,如下所示:

datetime_array = np.arange('2019-01-05','2019-01-10', dtype='datetime64')
print(datetime_array)#['2019-01-05' '2019-01-06' '2019-01-07' '2019-01-08' '2019-01-09']

设定numpy.arange()函数中的dtype参数,可以调整时间的间隔,比如以年、月、周,甚至小时、分钟、毫秒程度的间隔生成时间数组,这点和Python的datetime模块是一样的,分为了date单位和time单位。如下所示:

Python Numpy库datetime类型的处理详解

# generate year datetime array
datetime_array = np.arange('2018-01-01','2020-01-01', dtype='datetime64[Y]')
print(datetime_array)#['2018' '2019']
# generate month datetime array
datetime_array = np.arange('2019-01-01','2019-10-01', dtype='datetime64[M]')
print(datetime_array)#['2019-01' '2019-02' '2019-03' '2019-04' '2019-05' '2019-06' '2019-07' '2019-08' '2019-09']
# generate week datetime array
datetime_array = np.arange('2019-01-05','2019-02-10', dtype='datetime64[W]')
print(datetime_array)#['2019-01-03' '2019-01-10' '2019-01-17' '2019-01-24' '2019-01-31']
# generate ms datetime array
datetime_array = np.arange('2019-01-05','2019-01-10', dtype='datetime64[ms]')
print(datetime_array)
#['2019-01-05T00:00:00.000' '2019-01-05T00:00:00.001'
# '2019-01-05T00:00:00.002' ... '2019-01-09T23:59:59.997'
# '2019-01-09T23:59:59.998' '2019-01-09T23:59:59.999']

将numpy.datetime64转化为datetime格式转换为datetime格式,可使用astype()方法转换数据类型,如下所示:

#numpy.datetime64转化为datetime格式
datetime_df=datetime_nd.astype(datetime.datetime)
print(type(datetime_df))#<class 'datetime.date'>

另外,numpy也提供了datetime.timedelta类的功能,支持两个时间对象的运算,得到一个时间单位形式的数值。因为numpy的核心数组(ndarray)对象没有物理量系统(physical quantities system),所以创建了timedelta64数据类型来补充datetime64。datetime和timedelta结合提供了更简单的datetime计算方法。如下所示:

# numpy.datetime64 calculations
datetime_delta = np.datetime64('2009-01-01') - np.datetime64('2008-01-01')
print(datetime_delta)#366 days
print(type(datetime_delta))#<class 'numpy.timedelta64'>
datetime_delta = np.datetime64('2009') + np.timedelta64(20, 'D')
print(datetime_delta)#2009-01-21
datetime_delta = np.datetime64('2011-06-15T00:00') + np.timedelta64(12, 'h')
print(datetime_delta)#2011-06-15T12:00
datetime_delta = np.timedelta64(1,'W') / np.timedelta64(1,'D')
print(datetime_delta)#7.0

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中exit、return、sys.exit()等使用实例和区别
May 28 Python
python字典操作实例详解
Nov 16 Python
Python实现加载及解析properties配置文件的方法
Mar 29 Python
django+echart绘制曲线图的方法示例
Nov 26 Python
Python网页正文转换语音文件的操作方法
Dec 09 Python
如何使用Python 打印各种三角形
Jun 28 Python
Python中面向对象你应该知道的一下知识
Jul 10 Python
django 实现将本地图片存入数据库,并能显示在web上的示例
Aug 07 Python
Python多继承以及MRO顺序的使用
Nov 11 Python
django框架auth模块用法实例详解
Dec 10 Python
使用ITK-SNAP进行抠图操作并保存mask的实例
Jul 01 Python
Python读取图像并显示灰度图的实现
Dec 01 Python
Python3内置模块random随机方法小结
Jul 13 #Python
简单了解python的一些位运算技巧
Jul 13 #Python
简单了解python PEP的一些知识
Jul 13 #Python
python爬虫神器Pyppeteer入门及使用
Jul 13 #Python
Python 分享10个PyCharm技巧
Jul 13 #Python
简单了解Python3里的一些新特性
Jul 13 #Python
python将类似json的数据存储到MySQL中的实例
Jul 12 #Python
You might like
用PHP和ACCESS写聊天室(二)
2006/10/09 PHP
PHP在线生成二维码(google api)的实现代码详解
2013/06/04 PHP
如何使用php实现评委评分器
2015/07/31 PHP
PHP 中提示undefined index如何解决(多种方法)
2016/03/16 PHP
php+js实现裁剪任意形状图片
2018/10/31 PHP
laravel框架中控制器的创建和使用方法分析
2019/11/23 PHP
在页面上点击任一链接时触发一个事件的代码
2007/04/07 Javascript
如何防止回车(enter)键提交表单
2014/05/11 Javascript
详解如何让InstantClick兼容MathJax、百度统计等
2017/09/12 Javascript
JS面向对象的程序设计相关知识小结
2018/05/26 Javascript
微信小程序使用swiper组件实现层叠轮播图
2018/11/04 Javascript
谈谈React中的Render Props模式
2018/12/06 Javascript
JavaScript实现的鼠标跟随特效示例【2则实例】
2018/12/22 Javascript
小程序实现订单倒计时功能
2019/04/23 Javascript
JavaScript计算正方形面积
2019/11/26 Javascript
antd vue 刷新保留当前页面路由,保留选中菜单,保留menu选中操作
2020/08/06 Javascript
Python  __getattr__与__setattr__使用方法
2008/09/06 Python
pygame加载中文名mp3文件出现error
2017/03/31 Python
python爬虫入门教程--快速理解HTTP协议(一)
2017/05/25 Python
Python实现的json文件读取及中文乱码显示问题解决方法
2018/08/06 Python
使用Python制作自动推送微信消息提醒的备忘录功能
2018/09/06 Python
Python 比较文本相似性的方法(difflib,Levenshtein)
2018/10/15 Python
浅谈Pycharm调用同级目录下的py脚本bug
2018/12/03 Python
Python Multiprocessing多进程 使用tqdm显示进度条的实现
2019/08/13 Python
Python3.7 pyodbc完美配置访问access数据库
2019/10/03 Python
用Python去除图像的黑色或白色背景实例
2019/12/12 Python
Corelle官方网站:购买康宁餐具
2016/11/02 全球购物
房地产员工找工作的自我评价
2013/11/15 职场文书
内蒙古鄂尔多斯市市长寄语
2014/04/10 职场文书
综艺节目策划方案
2014/06/13 职场文书
勿忘国耻9.18演讲稿(经典篇)
2014/09/14 职场文书
社会工作专业自荐信
2014/09/26 职场文书
公司承诺书格式范文
2015/04/28 职场文书
单位政审意见范文
2015/06/04 职场文书
红色革命电影观后感
2015/06/18 职场文书
2015初中团委工作总结
2015/07/28 职场文书