百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

傻傻分不清楚系列 | Python中各种时间处理方法(下)

bigegpt 2024-10-22 09:55 3 浏览

? 上一篇文章中,我们理清楚了time库以及datetime库中各种时间对象的处理方法,以及相互之间的转化方法。

我们发现,time库以及datetime库中,确实存在名字相同,但是调用方法与所属类完全不一样的情况,这也是造成使用过程中各种混淆的原因。

今天我们把Pandas库中处理时间的各种函数与方法也加进来讨论,当然,由于Pandas中处理时间的方法和类太多太强大,我们仅仅是对其中探讨Pandas其中部分,特别是其中与time库、datetime库有关联且又容易混淆的相关知识。

(一) 此Timestamp非彼Timestamp

相信在读过前面一篇文章的同学,对time库中的unix时间戳还有印象,但是Pandas中的Timestamp对象和unix时间戳格式完全不同。

Pandas中的Timestamp对象可以说是Pandas中时间序列对象的“细胞”,如果我们有datetime64[ns]型Series对象如下:



你会发现当你提取Series第一个元素出来,返回来的就是一个Timestamp对象。当然,我们也可以自己创建一个Timestamp对象:


从上面的代码你会发现,你可以将unix时间戳、字符串型日期、datetime库中datetime.datetime通过pd.Timestamp()方法直接转化为Timestamp对象。

反过来呢?如果想将把Timestamp对象转化为unix时间戳,可以使用pd.Timestamp.timestamp()方法:



(二) 生成时间序列

Pandas作为处理多维数组的“神器”,本篇文章讲的当然是处理时间序列的方法。其中,Pandas中生成时间序列的方法不少,最常用的方法是pd.date_range(),我们看一下其使用方法:

l pd.date_range(start, end, freq) 生成一个时间段

n start:开始时间,参数可以是datetime库中的datetime对象,也可以是字符串。

n end:结束时间,参数可以是datetime库中的datetime对象,也可以是字符串。

n freq:时间频率,'Y'表示年,'M’表示月,'D’表示天,'H’表示小时,'Min’表示分钟

注意,这里开始时间和结束时间的参数指向的对象,是可以是datetime.datetime对象:



当然,这里的开始时间除了可以使用datetime.datetime实例以外(这里注意,是使用的datetime库中的类,而不是Pandas库),也可以用字符串来表示。

以start_time为2019年7月17日为例,start_time也可以是字符串'20190717'、'2019-07-17'、'2019/07/17'...



从上面可以看到,pd.date_range()方法生成的是长度为200、数据类型为datetime的DatetimeIndex对象,时间频率是天。

也就是说,2019年7月17日到2020年2月1日,算上始末的日期,一共200天。这是因为默认的频率是每天,freq='D'。 也可以通过改变时间频率,详情参考上面的使用方法添加修改freq参数即可。

如果我们想要2019年7月17日为起始,按照每天的时间频率,生成长度为200的DataIndex对象,可以这样写:



相应地,如果想要以2020年2月1日为结束日,按照每天的时间频率,生成长度为200的DataIndex对象,可以这样写:



(三) .to_datetime()方法

当然,上面的方法生成的是DatetimeIindex对象,可以通过pd.Series()方法转化为Series对象:



但是对于不规范的日期字符串Series,需要使用pd.to_datetime()方法来对其进行转换,比如:



(四) DateOffset类

datetime库中有timedelta类作为日期的增减,Pandas中也有专门的DateOffset类作为时间间隔对象,可以直接作用在上面的datetime型Series对象中。

其使用方法和datetime.timedelta类相似,但是要注意的是里面的参数名最后都加了's'。



datetime型Series对象可以直接使用DataOfffset对象进行日期加减:



也可以作用在DatetimeIndex对象中:



(五) 时间序列日期格式化

要对datetime型的Series对象进行日期格式转换,可以通过Series实例的方法.dt.strftime(),其格式化字符串依然可以参照datetime库中的格式化字符串对照表:




要对datetime型的Series对象进行日期格式转换,可以通过Series实例的方法.dt.strftime(),其格式化字符串依然可以参照文章开头的datetime库中的格式化字符串对照表:


但是如果留心的话可以发现,转化之后的数据类型,已经从datetime型变成object类,也就是字符串。

如果把字符串时间date_03重新转化为datetime型Series,用上面提到的pd.to_datetime()方法即可:



(六) 结后语

time库和datetime库以及Pandas中各种对象处理时间的方法,虽然错综复杂又相互关联,但是其实在使用方面有所侧重和不同。

time库以及datetime库的对象,一般用在程序设计的中涉及到时间的问题,比如爬虫的时候在获得的不规则时间时碰到的格式转换问题,会使用很多。

Pandas中各种与时间相关的类非常多,方法非常丰富,涉及到时间处理的各个方面,主要用作序列数据的处理方面,这和time库与datetime库对单独某些日期数据处理不同。

就数据分析工作而言,对时间序列数据处理的时候Pandas用得非常多,以至于很多人几乎都忘记time库与datetime库的存在。总体而言,对于数据分析初学者而言,可以把Pandas作为重点学习方面,但是time库和datetime库作为Python标准库,其时间类的基本使用方法的学习是必不可少的。

相关推荐

Docker篇(二):Docker实战,命令解析

大家好,我是杰哥上周我们通过几个问题,让大家对于Docker有了一个全局的认识。然而,说跟练往往是两个概念。从学习的角度来说,理论知识的学习,往往只是第一步,只有经过实战,才能真正掌握一门技术所以,本...

docker学习笔记——安装和基本操作

今天学习了docker的基本知识,记录一下docker的安装步骤和基本命令(以CentOS7.x为例)一、安装docker的步骤:1.yuminstall-yyum-utils2.yum-con...

不可错过的Docker完整笔记(dockerhib)

简介一、Docker简介Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源。Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,...

扔掉运营商的 IPTV 机顶盒,全屋全设备畅看 IPTV!

其实现在看电视节目的需求确实大大降低了,折腾也只是为了单纯的让它实现,享受这个过程带来的快乐而已,哈哈!预期构想家里所有设备直接接入网络随时接收并播放IPTV直播(电信点播的节目不是太多,但好在非常稳...

第五节 Docker 入门实践:从 Hello World 到容器操作

一、Docker容器基础运行(一)单次命令执行通过dockerrun命令可以直接在容器中执行指定命令,这是体验Docker最快捷的方式:#在ubuntu:15.10容器中执行ech...

替代Docker build的Buildah简单介绍

Buildah是用于通过较低级别的coreutils接口构建OCI兼容镜像的工具。与Podman相似,Buildah不依赖于Docker或CRI-O之类的守护程序,并且不需要root特权。Builda...

Docker 命令大全(docker命令大全记录表)

容器生命周期管理run-创建并启动一个新的容器。start/stop/restart-这些命令主要用于启动、停止和重启容器。kill-立即终止一个或多个正在运行的容器rm-于删除一个或...

docker常用指令及安装rabbitMQ(docker安装rabbitmq配置环境)

一、docker常用指令启动docker:systemctlstartdocker停止docker:systemctlstopdocker重启docker:systemctlrestart...

使用Docker快速部署Storm环境(docker部署confluence)

Storm的部署虽然不是特别麻烦,但是在生产环境中,为了提高部署效率,方便管理维护,使用Docker来统一管理部署是一个不错的选择。下面是我开源的一个新的项目,一个配置好了storm与mono环境的D...

Docker Desktop安装使用指南:零基础教程

在之前的文章中,我多次提到使用Docker来安装各类软件,尤其是开源软件应用。鉴于不少读者对此有需求,我决定专门制作一期关于Docker安装与使用的详细教程。我主要以Macbook(Mac平台)为例进...

Linux如何成功地离线安装docker(linux离线安装httpd)

系统环境:Redhat7.2和Centos7.4实测成功近期因项目需要用docker,所以记录一些相关知识,由于生产环境是不能直接连接互联网,尝试在linux中离线安装docker。步骤1.下载...

Docker 类面试题(常见问题)(docker面试题目)

Docker常见问题汇总镜像相关1、如何批量清理临时镜像文件?可以使用sudodockerrmi$(sudodockerimages-q-fdanging=true)命令2、如何查看...

面试官:你知道Dubbo怎么优雅上下线的吗?你:优雅上下线是啥?

最近无论是校招还是社招,都进行的如火如荼,我也承担了很多的面试工作,在一次面试过程中,和候选人聊了一些关于Dubbo的知识。Dubbo是一个比较著名的RPC框架,很多人对于他的一些网络通信、通信协议、...

【Docker 新手入门指南】第五章:Hello Word

适合人群:完全零基础新手|学习目标:30分钟掌握Docker核心操作一、准备工作:先确认是否安装成功打开终端(Windows用户用PowerShell或GitBash),输入:docker--...

松勤软件测试:详解Docker,如何用portainer管理Docker容器

镜像管理搜索镜像dockersearch镜像名称拉取镜像dockerpullname[:tag]列出镜像dockerimages删除镜像dockerrmiimage名称或id删除...