首页 > 编程知识 正文

python时间差(流畅的python)

时间:2023-05-06 17:22:37 阅读:84607 作者:2241

上一篇文章介绍了如何处理time和datetime库的不同时间对象,以及如何进行相互转换。

我们发现,time和datetime库具有相同的名称,但调用方法可能与它们所属的类完全不同,这也导致了使用过程中的各种混乱。

今天我们还将讨论在Pandas库中处理时间的各种函数和方法。 当然,由于Pandas有太多处理时间的方法和类,因此只讨论Pandas的一部分,特别是time库和datetime库,容易混淆的知识。

(一)该Timestamp不是其他的Timestamp

看过上一篇文章的同学相信time库的unix时间戳还有图像,但是Pandas的Timestamp对象和unix时间戳的格式完全不同。

Pandas中的Timestamp对象可以说是Pandas中时间序列对象的细胞。 如果有datetime64[ns]类型的系列对象,则如下所示:

独特的黄蜂抽出Series的第一个元素出来,返回的是Timestamp对象。 当然,也可以自己创建Timestamp对象。

如上面的代码所示,可以使用pd.Timestamp ()方法直接将unix时间戳、字符串类型日期和datetime库中的datetime.datetime转换为Timestamp对象。

反之呢? 若要将Timestamp对象转换为unix时间戳,请使用pd.Timestamp.timestamp ()方法。

(二)生成时间序列

Pandas作为处理多维数组的“神器”,本文当然论述了处理时间序列的方法。 其中,Pandas有不少生成时间序列的方法,最常见的方法是pd.date_range () ),让我们来看看其使用方法。

lpd.date _ range (开始、结束、频率)生成时间段

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

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

n freq:小时频率,“y”表示年,“m”表示月,“d”表示日,“h”表示小时,“min”表示分钟

请注意,开始时间和结束时间参数所指向的对象是datetime.datetime对象。

当然,这里的开始时间除了datetime.datetime实例以外,还可以用字符串表示。

在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对象,可以写为:

ded67a30dd49?from=pc">

相应地,如果想要以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标准库,其时间类的基本使用方法的学习是必不可少的。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。