python3中datetime库,time库以及pandas中的时间函数区别与详解


Posted in Python onApril 16, 2020

1介绍datetime库之前 我们先比较下time库和datetime库的区别

先说下time

在 Python 文档里,time是归类在Generic Operating System Services中,换句话说, 它提供的功能是更加接近于操作系统层面的。通读文档可知,time 模块是围绕着 Unix Timestamp 进行的。

该模块主要包括一个类 struct_time,另外其他几个函数及相关常量。 需要注意的是在该模块中的大多数函数是调用了所在平台C library的同名函数, 所以要特别注意有些函数是平台相关的,可能会在不同的平台有不同的效果。另外一点是,由于是基于Unix Timestamp,所以其所能表述的日期范围被限定在 1970 - 2038 之间,如果你写的代码需要处理在前面所述范围之外的日期,那可能需要考虑使用datetime模块更好

所以 一般情况下我们用datetime库就可以解决大部分问题

2说完了datetime与time的区别 先别着急 我们再来说下datetime和pandas时间序列分析和处理Timeseries 

pandas 最基本的时间序列类型就是以时间戳(TimeStamp)为 index 元素的 Series 类型。

pandas库想必大家非常熟悉了,这里不再多说。这个方法的实用性在于,当需要批量处理时间数据时,无疑是最好用的。

pandas时序数据文件读取

dateparse = lambda dates: pd.datetime.strptime(dates, '%Y-%m')
data = pd.read_csv('AirPassengers.csv', parse_dates='Month', index_col='Month',date_parser=dateparse)
print data.head()

read_csv时序参数

parse_dates:这是指定含有时间数据信息的列。正如上面所说的,列的名称为“月份”。
index_col:使用pandas 的时间序列数据背后的关键思想是:目录成为描述时间数据信息的变量。所以该参数告诉pandas使用“月份”的列作为索引。

date_parser:指定将输入的字符串转换为可变的时间数据。Pandas默认的数据读取格式是‘YYYY-MM-DD HH:MM:SS'?如需要读取的数据没有默认的格式,就要人工定义。这和dataparse的功能部分相似,这里的定义可以为这一目的服务。The default uses dateutil.parser.parser to do the conversion.

最后 ,我们看下pandas库中的to_datime函数:

pandas.to_datetime(arg,errors ='raise',utc = None,format = None,unit = None )

参数    意义
errors    三种取值,‘ignore', ‘raise', ‘coerce',默认为raise。

             'raise',则无效的解析将引发异常

             'coerce',那么无效解析将被设置为NaT

             'ignore',那么无效的解析将返回输入值

utc  布尔值,默认为none。返回utc即协调世界时。
format    格式化显示时间的格式。
unit    默认值为‘ns',则将会精确到微妙,‘s'为秒。

举个小例子:

df = pd.DataFrame({'year': [2015, 2016],
            'month': [2, 3],
            'day': [4, 5]})
pd.to_datetime(df)
#0  2015-02-04
#1  2016-03-05
#dtype: datetime64[ns]
#可以看到将字典形式时间转换为可读时间
 
2、
pd.to_datetime('13000101', format='%Y%m%d', errors='ignore')
#datetime.datetime(1300, 1, 1, 0, 0)
 
pd.to_datetime('13000101', format='%Y%m%d', errors='coerce')
#NaT
#如果日期不符合时间戳限制,则errors ='ignore'将返回原始输入,而不会报错。
#errors='coerce'将强制超出NaT的日期,返回NaT。

3最后我们来说下datetime库的最终用法

datetime模块用于是date和time模块的合集,datetime有两个常量,MAXYEAR和MINYEAR,分别是9999和1.

datetime模块定义了5个类,分别是

1.datetime.date:表示日期的类

2.datetime.datetime:表示日期时间的类

3.datetime.time:表示时间的类

from datetime import date
from datetime import datetime
from datetime import time
from datetime import timedelta
from datetime import tzinfo
 
from datetime import * #不知道用啥 全部导入就可以

4.datetime.timedelta:表示时间间隔,即两个时间点的间隔

5.datetime.tzinfo:时区的相关信息

一、首先看一下datetime.date类:

date类有三个参数,datetime.date(year,month,day),返回year-month-day

方法:

1.datetime.date.ctime(),返回格式如 Sun Apr 16 00:00:00 2017

2.datetime.date.fromtimestamp(timestamp),根据给定的时间戮,返回一个date对象;datetime.date.today()作用相同

3.datetime.date.isocalendar():返回格式如(year,month,day)的元组,(2017, 15, 6)

4.datetime.date.isoformat():返回格式如YYYY-MM-DD

5.datetime.date.isoweekday():返回给定日期的星期(0-6)星期一=0,星期日=6 这里表明下python3中是从[1-7]表示的 就是本来是星期几现在显示就是星期几

6.datetime.date.replace(year,month,day):替换给定日期,但不改变原日期

7.datetime.date.strftime(format):把日期时间按照给定的format进行格式化。

8.datetime.date.timetuple():返回日期对应的time.struct_time对象

time.struct_time(tm_year=2017, tm_mon=4, tm_mday=15, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=105, tm_isdst=-1)

9.datetime.date.weekday():返回日期的星期

python中时间日期格式化符号:

%y 两位数的年份表示(00-99)

%Y 四位数的年份表示(000-9999)

%m 月份(01-12)

%d 月内中的一天(0-31)

%H 24小时制小时数(0-23)

%I 12小时制小时数(01-12)

%M 分钟数(00=59)

%S 秒(00-59) 

%a 本地简化星期名称

%A 本地完整星期名称

%b 本地简化的月份名称

%B 本地完整的月份名称

%c 本地相应的日期表示和时间表示

%j 年内的一天(001-366)

%p 本地A.M.或P.M.的等价符

%U 一年中的星期数(00-53)星期天为星期的开始

%w 星期(0-6),星期天为星期的开始

%W 一年中的星期数(00-53)星期一为星期的开始

%x 本地相应的日期表示

%X 本地相应的时间表示

%Z 当前时区的名称

%% %号本身

二、看一下datetime的time类

time类有5个参数,datetime.time(hour,minute,second,microsecond,tzoninfo),返回08:29:30

1.datetime.time.replace()

2.datetime.time.strftime(format):按照format格式返回时间

3.datetime.time.tzname():返回时区名字

4.datetime.time.utcoffset():返回时区的时间偏移量

三、datetime的datetime类

datetime类有很多参数,datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]]),返回年月日,时分秒

datetime.datetime.ctime()

datetime.datetime.now().date():返回当前日期时间的日期部分

datetime.datetime.now().time():返回当前日期时间的时间部分

datetime.datetime.fromtimestamp()

datetime.datetime.now():返回当前系统时间

datetime.datetime.replace()

datetime.datetime.strftime():由日期格式转化为字符串格式

datetime.datetime.now().strftime('%b-%d-%Y %H:%M:%S')

'Apr-16-2017 21:01:35'

datetime.datetime.strptime():由字符串格式转化为日期格式

datetime.datetime.strptime('Apr-16-2017 21:01:35', '%b-%d-%Y %H:%M:%S')
2017-04-16 21:01:35

 四、datetime的timedelta类

datetime.datetime.timedelta用于计算两个日期之间的差值,例如:

a=datetime.datetime.now()
b=datetime.datetime.now()
a
datetime.datetime(2017, 4, 16, 21, 21, 20, 871000)
b
datetime.datetime(2017, 4, 16, 21, 21, 29, 603000)
 
b-a
datetime.timedelta(0, 8, 732000)
(b-a).seconds
8

或者

time1 = datetime.datetime(2016, 10, 20)
time2 = datetime.datetime(2015, 11, 2)
 
"""计算天数差值"""
print(time1-time2).days
 
"""计算两个日期之间相隔的秒数"""
print (time1-time2).total_seconds()

到此这篇关于python3中datetime库,time库以及pandas中的时间函数区别与详解的文章就介绍到这了,更多相关python3 datetime库,time库以及pandas时间函数内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python性能优化技巧
Mar 09 Python
go语言计算两个时间的时间差方法
Mar 13 Python
Android模拟器无法启动,报错:Cannot set up guest memory ‘android_arm’ Invalid argument的解决方法
Jul 01 Python
matplotlib绘图实例演示标记路径
Jan 23 Python
wtfPython—Python中一组有趣微妙的代码【收藏】
Aug 31 Python
【python】matplotlib动态显示详解
Apr 11 Python
Python3内置模块之json编解码方法小结【推荐】
Dec 09 Python
详解Python二维数组与三维数组切片的方法
Jul 18 Python
详解python中的模块及包导入
Aug 30 Python
keras的load_model实现加载含有参数的自定义模型
Jun 22 Python
python 实现倒计时功能(gui界面)
Nov 11 Python
python基础之文件操作
Oct 24 Python
python datetime处理时间小结
Apr 16 #Python
Python 日期时间datetime 加一天,减一天,加减一小时一分钟,加减一年
Apr 16 #Python
基于matplotlib xticks用法详解
Apr 16 #Python
解决Jupyter NoteBook输出的图表太小看不清问题
Apr 16 #Python
解决import tensorflow as tf 出错的原因
Apr 16 #Python
tensorflow安装成功import tensorflow 出现问题
Apr 16 #Python
Anaconda配置pytorch-gpu虚拟环境的图文教程
Apr 16 #Python
You might like
PHP内核探索:变量概述
2014/01/30 PHP
jQuery操作 input type=checkbox的实现代码
2012/06/14 Javascript
JavaScript中的undefined学习总结
2013/11/30 Javascript
AngularJS模块管理问题的非常规处理方法
2015/04/29 Javascript
php结合imgareaselect实现图片裁剪
2015/07/05 Javascript
javascript实现图片上传前台页面
2015/08/18 Javascript
JavaScritp添加url参数并将参数加入到url中及更改url参数的方法
2015/10/26 Javascript
学习JavaScript设计模式之装饰者模式
2016/01/19 Javascript
Ionic快速安装教程
2016/06/03 Javascript
全面总结Javascript对数组对象的各种操作
2017/01/22 Javascript
支持移动端原生js轮播图
2017/02/16 Javascript
es6学习之解构时应该注意的点
2017/08/29 Javascript
解决layui前端框架 form表单,table表等内置控件不显示的问题
2018/08/19 Javascript
ES6 迭代器与可迭代对象的实现
2019/02/11 Javascript
浅谈layui 数据表格前后台传值的问题
2019/09/12 Javascript
[02:33]2018 DOTA2亚洲邀请赛回顾视频 再次拾起那些美妙的时刻
2018/04/10 DOTA
Python 命令行非阻塞输入的小例子
2013/09/27 Python
Python获取文件ssdeep值的方法
2014/10/05 Python
利用Python实现简单的相似图片搜索的教程
2015/04/23 Python
Python如何读取MySQL数据库表数据
2017/03/11 Python
神经网络(BP)算法Python实现及应用
2018/04/16 Python
Python Pywavelet 小波阈值实例
2019/01/09 Python
python gensim使用word2vec词向量处理中文语料的方法
2019/07/05 Python
Python实现蒙特卡洛算法小实验过程详解
2019/07/12 Python
使用python实现男神女神颜值打分系统(推荐)
2019/10/31 Python
python speech模块的使用方法
2020/09/09 Python
深入理解Python变量的数据类型和存储
2021/02/01 Python
JD Sports德国官网:英国领先的运动鞋和运动服饰零售商
2018/02/26 全球购物
iKRIX意大利网上商店:男女豪华服装和配件
2019/10/09 全球购物
标记环介质访问控制协议
2016/03/27 面试题
停车位租赁协议书
2014/09/24 职场文书
运动会铅球比赛加油稿
2014/09/26 职场文书
2014年共青团工作总结
2014/12/10 职场文书
关于倡议书的范文
2015/04/29 职场文书
幼儿园家长心得体会
2016/01/21 职场文书
MySQL中IO问题的深入分析与优化
2022/04/02 MySQL