当前位置: 首页 > 后端技术 > Python

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

时间:2023-03-26 14:04:31 Python

上一篇文章我们阐明了time库和datetime库中各种时间对象的处理方法,以及它们之间的转换方法。我们发现time库和datetime库确实同名,但是调用方式和它们所属的类完全不同,这也是在使用过程中出现各种混淆的原因。今天我们讨论一下Pandas库中处理时间的各种函数和方法。当然,由于Pandas中处理时间的方法和类太多,我们只讨论其中的一部分,尤其是与时间相关的。图书馆、日期时间图书馆相关和混淆的知识。(1)这个时间戳不是另一个时间戳。相信看过前文的同学对时间库中的Unix时间戳还是有印象的,但是Pandas中的Timestamp对象与Unix时间戳格式完全不同。Pandas中的Timestamp对象可以说是Pandas中时间序列对象的“细胞”。如果我们有一个datetime64[ns]Series对象如下:你会发现当你提取Series的第一个元素时,返回的是一个Timestamp对象。当然,我们也可以自己创建一个Timestamp对象:从上面的代码中,你会发现可以直接通过pd.Timestamp()方法。反过来呢?如果想将Timestamp对象转换成unix时间戳,可以使用pd.Timestamp.timestamp()方法:(2)生成时间序列Pandas作为处理多维数组的“神器”。这篇文章当然是关于处理时间序列的方法。其中,Pandas中生成时间序列的方法有很多,最常用的方法是pd.date_range(),我们来看看如何使用:lpd.date_range(start,end,freq)生成一个时间periodnstart:开始时间,参数可以是datetime库中的datetime对象,也可以是字符串。nend:结束时间,参数可以是datetime库中的datetime对象,也可以是字符串。nfreq:时间频率,'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、时间频率为days的DatetimeIndex对象。也就是说,从2019年7月17日到2020年2月1日,包括起止日期,一共200天。这是因为默认频率是每天,freq='D'。您还可以更改时间频率。具体可以参考上面的使用方法添加修改freq参数。如果我们想从2019年7月17日开始,根据每天的时间频率生成一个长度为200的DataIndex对象,我们可以这样写:相应地,如果我们想在2020年2月1日结束,按照每天的时间频率,生成一个长度为200的DataIndex对象,可以这样写:(3).to_datetime()方法当然上面的方法生成了一个DatetimeIindex对象,可以通过pd.Series转换成Series对象()方法:但是对于非标准的日期字符串Series,需要使用pd.to_datetime()方法进行转换,如:(4)DateOffset类datetime库有timedelta类作为时间的增减date,而Pandas中还有一个特殊的DateOffset类作为时间间隔对象,可以直接在上面的datetimeSeries对象中使用。它的使用方法类似于datetime.timedelta类,但是需要注意的是里面的参数名都是在末尾加's'。datetimeSeries对象可以直接使用DataOffset对象进行日期加减:也可以在DatetimeIndex对象中使用:(5)时间序列日期格式化转换datetimeSeries对象的日期格式,可以使用方法Seriesinstance.dt.strftime(),格式字符串仍然可以参考datetime库中的格式字符串对照表:要转换datetimeSeries对象的日期格式,可以使用方法.dt.strftime()Series实例,它的格式字符串,还是可以参考文章开头的datetime库中的格式字符串对照表:但是注意一下,可以发现转换后的数据类型从datetime变成了对象,它是一个字符串。如果将字符串时间date_03重新转换成datetimeSeries,使用上面提到的pd.to_datetime()方法:(6)结论Pandas中时间库和datetime库以及各种对象处理时间的方法,虽然比较复杂相互关联,但实际上在使用上是有侧重点和区别的。time库和datetime库的对象一般用于编程中与时间相关的问题,比如爬虫获取不规则时间遇到的格式转换问题,会用到很多。Pandas中有很多时间相关的类,方法也很丰富,涉及到时间处理的方方面面,主要用于序列数据的处理,区别于time库和datetime库对某些日期数据的处理.就数据分析而言,在处理时间序列数据时,Pandas的使用非常多,以至于很多人几乎忘记了时间库和日期时间库的存在。一般来说,对于数据分析初学者来说,Pandas可以作为重点学习方面,但是time库和datetime库是Python标准库,时间类的基本使用是学习必不可少的。