一、什么是时间序列?

时间序列(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)数据的数据类型,主要用到的模块有datetime和time。

但是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标准库函数:
  • 日期--->字符串:str或strftime
  • 字符串--->日期:datetime.striptime
  • 第三方库函数:

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)]