时间序列数据是一种重要的结构化数据形式,在多个时间点观察或测量到的任何事物都可以形成一段时间序列。时间序列可以是固定频率的,也可以是不定期的。
时间序列数据的意义取决于具体的应用场景,Python标准库包含用于日期(date)和时间(time)数据的数据类型,而且还有日历方面的功能。在日常数据分析中,主要会用到time、datetime函数。
本文使用工具:Python 3.7.0
本文使用的函数:time、datetime
适用范围:基本的时间序列类型数据分析,爬虫时间模拟
time函数
在time 模块中,time.time()和time.sleep()这两个函数使用最为频繁,应用性也最广。time.time()函数返回自那一刻以来的秒数,是一个浮点值。
import time
time.time()
打印结果如下:
1618052792.2365315
使用time.sleep()函数,每个一段时间,运行命令。
import time
for i in ('*','**','***','****','*****'):
print(i)
time.sleep(1)
time.sleep(3)
这段命令的意思是,for 循环打印 “*” 号,每打印一下,暂停一秒钟,如此继续,直到打印完毕,使用time.sleep(3)命令,3秒后到下一个提示符,这个命令在爬虫时,模拟人登录浏览网页的时候会用到。
datetime函数
datetime返回当前日期和时间
datetime是时间序列中用得最多的数据类型,datetime模块中常用的数据类型如下所示:
- date 以公历存储日历日期(年、月、日)
- time 将时间存储为时、分、秒、毫秒
- datetime 存储日期和时间
- timedelta 表示两个datetime值之间的差(日、秒、毫秒)
使用如下的命令返回当前时间。
#导入datetime库
from datetime import datetime
#返回当前时间
datetime.now()
打印结果如下:
datetime.datetime(2021, 4, 10, 18, 51, 40, 925672)
打印当前的年月日。
#打印年月日
print(datetime.now().year)
print(datetime.now().month)
print(datetime.now().day)
打印结果如下:
2021
4
10
#打印时分秒
print(datetime.now().hour)
print(datetime.now().minute)
print(datetime.now().second)
打印结果如下:
18
47
42
返回当前年月日还有另一种打印的方法。
#只返回年月日
now.year, now.month, now.day
打印结果如下:
(2021, 4, 10)
返回当前的日期。
datetime.now().date()
打印结果如下:
datetime.date(2021, 4, 10)
返回当前的时间。
datetime.now().time()
打印结果如下:
datetime.time(17, 51, 12, 433245)
datetime转化为字符串
在数据分析时,对于datetime的类型会进行格式转化,常用的是将其转化为字符串类型。
#datetime转化为字符串
from datetime import datetime
today=datetime(2021,4,10)
str(today)
打印结果如下:
'2021-04-10 00:00:00'
在转化为字符串类型时,也会使用到strftime函数,datetime格式定义代码说明如下:
- %Y 表示4位数的年(常用)
- %y 表示2位数的年
- %m 表示2位数的月
- %d 表示2位数的日
将当前日期转化为字符串,这里使用"%Y-%m-%d"格式。
today.strftime("%Y-%m-%d")
打印结果如下:
'2021-04-10'
有时候,需要返回的日期类型形如20210410,需要将其转化为字符串类型,由于默认的年月日之间有 "-" 用于分隔,这里使用replace进行替换。
#转为字符串并去除'-'
import datetime
today=str(datetime.date.today())
today=today.replace('-','')
print('今天的日期是:',today)
打印结果如下:
今天的日期是: 20210410
同样的使用"%Y-%m-%d"进行格式转化。
#strftime()定义的时间格式
from datetime import datetime
today=datetime.now().strftime("%Y-%m-%d")
today
打印结果如下:
'2021-04-10'
对于不同日期用不同的分隔符分隔时,这里可以使用parser函数将其统一转化为标准格式。
# 多种不同的日期类型解析
from dateutil.parser import parse
print(parse('2021/04/10'))
print(parse('2021-04-10'))
print(parse('2021/04-10'))
print(parse('20210410'))
打印结果如下:
2021-04-10 00:00:00
2021-04-10 00:00:00
2021-04-10 00:00:00
2021-04-10 00:00:00