6-Python中的日期与时间数据(介绍时序数据、datetime模块介绍、字符串与时间互换)

一、什么是时间序列?

时间序列(Time Series)是一种重要的结构化数据形式,在多个时间点观察或测量到的任何事物都可以形成一段时间序列,可分为以下两种:

  • 定期的时间序列:数据根据某种规律定期出现(例如:每10秒、每1分)
  • 不定期的时间序列:数据之间并没有固定的时间单位或是单位之间的偏移量

二、时间序列的类型有哪些?

时间序列数据的类型主要取决于具体的应用场景,一般可分为3种:

  1. 时间戳(Timestamps):即特定的时刻,如2020年1月1日14时12分34秒
  2. 固定时期(Fixed periods):如2020年3月或2020年全年
  3. 时间间隔(Interval of time):如2020年8月1日到2020年9月1日

三、时间序列类型的处理是否Pandas中独有?

不是Pandas中独有的,Python的基础库中包含了用于日期(date)时间(time)数据的数据类型,主要用到的模块有datetimetime

但是Pandas提供了一组标准的时间序列处理工具和数据算法,如切片、切块、聚合、对定期/不定期的时间序列进行重采样等。

四、datetime模块

datetime模块中的数据类型如下

类型 说明
date 以公历形式存储日历日期(年、月、日)
time 将时间存储为时、分、秒、毫秒
datetime 存储日期和时间,即date和time的结合
timedelta 两个datetime值之间的差(日、秒、毫秒)

 

 

 

 

 

 

 

其中:datetime.datetime简称为datetime,是最为常用的数据类型。

:查看当前的日期与时间(记录到秒),为datetime类型:

>>> from datetime import datetime
>>> now = datetime.now()
>>> now
datetime.datetime(2020, 8, 8, 17, 10, 19, 19020)

#可使用如下方式查看年、月、日、时、分、秒
>>> x = [now.year,now.month,now.day,now.hour,now.minute,now.second]
>>> x
[2020, 8, 8, 17, 10, 19]

  两个datetime对象之间的时间差(日、秒、毫秒)为timedelta类型

>>> delta = now - datetime(2020,1,14)
>>> delta
datetime.timedelta(days=207, seconds=61819, microseconds=19020)

#所以可以通过如下方式查看日、秒、毫秒
>>> y = [delta.days,delta.seconds,delta.microseconds]
>>> y
[207, 61819, 19020]

五、字符串和datetime的互换 

字符串与datetime之间通常需要进行转换,有如下几种方式:

  • Python标准库函数:
    • 日期--->字符串strstrftime
    • 字符串--->日期datetime.striptime
  • 第三方库函数:

 time模块中字符串与时间的互换这里也可以参考另一篇博文【python小题目汇总的第一题

1)日期----->字符串

:使用str将日期转换成字符串

>>> stamp = datetime(2020,8,8)
>>> str(stamp)
'2020-08-08 00:00:00'

  那么如何对datetime的格式进行更改呢,在这就设计到了对datetime格式的定义

符号 说明
%Y 4位数的年份
%y 2位数的年份
%m 2位数的月
%d 2位数的日
%H 24小时的时
%I 12小时的时

 

 

 

 

 

 

 

 

 

:使用strftime将日期转换成字符串,并设置格式

>>> stamp.strftime('%y-%m-%d')
'20-08-08'
>>> stamp.strftime('%Y-%m-%d')
'2020-08-08'

2)字符串----->日期

 例:使用strptime将字符串转换成日期,需要传入格式

 需要注意的是:此处的格式不可随便设置,应该与字符串中的格式一致

>>> value = '2020-1-14'
#此时以下将会报错
>>> datetime.strptime(value,'%y-%m-%d')
ValueError: time data '2020-1-14' does not match format '%y-%m-%d'

>>> datetime.strptime(value,'%Y-%m-%d')
datetime.datetime(2020, 1, 14, 0, 0)

  可以strptime结合使用列表推导式将多个字符串转换成日期

>>> values = ['2020-5-23','2018-4-2']
>>> [datetime.strptime(value,'%Y-%m-%d') for value in values]
[datetime.datetime(2020, 5, 23, 0, 0), datetime.datetime(2018, 4, 2, 0, 0)]

  

 

posted @ 2020-08-08 16:47  大脸猫12581  阅读(623)  评论(0编辑  收藏  举报