目标:时间序列的各种处理⽅法
什么叫做时间序列数据呢?时间序列数据(Time Series Data)就是在不同时间上收集到 的数据,这类数据是按时间顺序收集到的,用于描述现象随时间变化的情况。
Pandas为我们 提供了强大的时间序列数据处理的方法,下面是在学习过程中,将时间相关的知识点系统的梳理出来,我们一起学习。
⼀. ⽇期和时间数据类型
Python标准库包含了日期和时间数据的数据类型,接下来我们使用datetime模块进 行处理 datetime是一个时间库,常用的类如下:
- date ---- 以公历形式储存日历日期(年,月,日)
- time ---- 存储时间(时,分,秒)
- datetime ---- 存储日期和时间
① date的使用
# 导入datetime模块import datetimedate = datetime.date(2019, 9, 9)print(date)print(date.year)print(date.month)print(date.day)
②time的使⽤
# 创建时间import datetimetime = datetime.time(13, 14, 20)print(time) #13:14:20 5 # 获取小时print(time.hour) #13 7 # 获取分钟print(time.minute) #14 9 # 获取秒print(time.second) #20
③datetime的使⽤
import datetimedatetime = datetime.datetime(2019, 9, 9, 13, 14, 20)print(datetime) #2019-09-09 13:14:20 5 # 获取年print(datetime.year) #2019 7 # 获取月print(datetime.month)#9 9 # 获取日print(datetime.day) #9 11 # 获取小时print(datetime.hour) #13 13 # 获取分钟print(datetime.minute)#14 15 # 获取秒print(datetime.second)#20
④ datetime.now()方法
#获取当前时间print(datetime.now()) #2020-03-05 14:03:44.794096
⑤ datetime类型强制转成字符串样式
import datetimedatetime = datetime.datetime(2019, 9, 9, 13, 14, 20)print(datetime) #2019-09-09 13:14:20print(type(datetime)) # #强制转化为str类型datetime_str = str(datetime)print(datetime_str) #2019-09-09 13:14:20 9 print(type(datetime_str)) #
⑥ strftime():将datetime转化为str类型
import datetimedate_time = datetime.datetime(2019, 9, 9, 13, 14, 20)#利用strftime方法转化为str类型str_time = date_time.strftime('%m/%d/%Y %H:%M')print(str_time) #09/09/2019 13:14 print(type(str_time)) #
%m/%d/%Y %H:%M就是格式化以后的样式,%m、%d等是时间格式化占位符 时间格式化占位符的汇总如下图
⑦strptime():将str类型转化为datetime类型
import datetimestrp = datetime.datetime.strptime('Aug-23-19 20:13', '%b-%d-%y %H:%M')print(strp) #2019-08-23 20:13:00print(type(strp)) #
⼆. Pandas时间序列基础
1.Pandas的date_range()方法可以快速创建出⼀个日期范围
pd.date_range(start=None,end=None,periods=None,freq="D")
参数介绍:
- start:⽇期范围的开始;
- end:⽇期范围的结束;
- periods:固定⽇期的个数;
- freq:⽇期偏移量,取值为string, 默认为'D',即:⼀天为⽇期偏移量
date_range()的使⽤⽅式
- 使⽤start和end以及默认的freq参数创建
- 使⽤start和end以及频率参数freq为10天创建
- 使⽤start和periods以及默认的频率参数创建
import pandas as pddate= pd.date_range(start='20190505',end='20190606')print(date)date= pd.date_range(start='20190505',end='20190606',freq="10D")print(date)date= pd.date_range(start='20190505',periods=10,freq="D")print(date)
2.时间设置成数据的索引
import pandas as pdimport numpy as np#使用pd.date_range()来创建从2019-01-01开始的时间索引time_index = pd.date_range('2019-01-01', periods=400)#使用numpy的随机数创建365个随机整数time_data = np.random.randint(100,size=400)#创建出以时间序列为索引的Series数据date_time = pd.Series(data=time_data,index=time_index)print(date_time)
3.根据时间序列索引获取数据
#根据年进行索引date_time['2020']#使用时间戳进行切片处理date_time['2019-10-05':'2019-10-10']
4.to_datetime()方法可以将字符串形式的日期转换成时间格式
pd.to_datetime(arg,format=None)
arg:需要修改的数据
format:数据的格式
to_datetime()⽅法会将字符串类型的时间转换成Timestamp('2019-10-05 00:00:00') 时间戳类型
pd.to_datetime('2019-10-05')#如果日期中包括中文data = pd.to_datetime('2019年10月10日',format='%Y年%m月%d日')data
5.to_pydatetime()方法将Timestamp类型转换成datetime类型
d.to_datetime('2019-10-05').to_pydatetime()
作者:Cherich_sun
链接:https://www.jianshu.com/p/79cb1ba22349
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。