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中requests模块的使用方法
Apr 08 Python
Python的Flask框架中集成CKeditor富文本编辑器的教程
Jun 13 Python
Python中的pygal安装和绘制直方图代码分享
Dec 08 Python
django1.11.1 models 数据库同步方法
May 30 Python
PyCharm的设置方法和第一个Python程序的建立
Jan 16 Python
Python中函数的基本定义与调用及内置函数详解
May 13 Python
Matplotlib绘制雷达图和三维图的示例代码
Jan 07 Python
python plt可视化——打印特殊符号和制作图例代码
Apr 17 Python
Python Excel vlookup函数实现过程解析
Jun 22 Python
Selenium python时间控件输入问题解决方案
Jul 22 Python
详解Scrapy Redis入门实战
Nov 18 Python
python geopandas读取、创建shapefile文件的方法
Jun 29 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 服务器配置(使用Apache及IIS两种方法)
2009/06/01 PHP
PHP实现生成唯一会员卡号
2015/08/24 PHP
基于jquery的时间段实现代码
2012/08/02 Javascript
EASYUI TREEGRID异步加载数据实现方法
2012/08/22 Javascript
判断及设置浏览器全屏模式
2014/04/20 Javascript
js倒计时抢购实例
2015/12/20 Javascript
jQuery CSS3自定义美化Checkbox实现代码
2016/05/12 Javascript
js实现表单及时验证功能 用户信息立即验证
2016/09/13 Javascript
JavaScript 是什么意思
2016/09/22 Javascript
javascript的几种写法总结
2016/09/30 Javascript
JavaScript严格模式详解
2017/01/16 Javascript
浅谈angular2的http请求返回结果的subcribe注意事项
2017/03/01 Javascript
详谈jQuery Ajax(load,post,get,ajax)的用法
2017/03/02 Javascript
jQuery实现返回顶部按钮和scroll滚动功能[带动画效果]
2017/07/05 jQuery
JavaScript hasOwnProperty() 函数实例详解
2017/08/04 Javascript
javascript+html5+css3自定义弹出窗口效果
2017/10/26 Javascript
jquery实现楼层滚动效果
2018/01/01 jQuery
浅谈在vue中用webpack打包之后运行文件的问题以及相关配置方法
2018/02/21 Javascript
一次Webpack配置文件的分离实战记录
2018/11/30 Javascript
layui实现鼠标移动到单元格上显示数据的方法
2019/09/11 Javascript
基于Vue.js与WordPress Rest API构建单页应用详解
2019/09/16 Javascript
Python和php通信乱码问题解决方法
2014/04/15 Python
python中反射用法实例
2015/03/27 Python
批量将ppt转换为pdf的Python代码 只要27行!
2018/02/26 Python
python opencv判断图像是否为空的实例
2019/01/26 Python
python中线程和进程有何区别
2020/06/17 Python
html5 外链式实现加减乘除的代码
2019/09/04 HTML / CSS
夏尔巴人登珠峰品牌:Sherpa Adventure Gear
2018/02/08 全球购物
马来西亚和新加坡巴士票在线预订:CatchThatBus
2018/11/17 全球购物
瑞典最大的儿童用品网上商店:pinkorblue.se
2021/03/09 全球购物
毕业生求职推荐信
2013/11/04 职场文书
集团公司总经理岗位职责
2013/12/20 职场文书
无私奉献演讲稿
2014/09/04 职场文书
幼儿园感恩节活动方案2014
2014/10/11 职场文书
乡镇党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
西柏坡观后感
2015/06/08 职场文书