Pandas时间序列基础详解(转换,索引,切片)
时间序列的类型:
时间戳:具体的时刻
固定的时间区间:例如2007年的1月或整个2010年
时间间隔:由开始时间和结束时间表示,时间区间可以被认为是间隔的特殊情况
实验时间和消耗时间:每个时间是相对于特定开始时间的时间的量度,(例如自从被放置在烤箱中每秒烘烤的饼干的直径)
日期和时间数据的类型及工具
datetime模块中的类型:
date使用公历日历存储日历日期(年,月,日) time将时间存储为小时,分钟,秒,微秒 datetime存储日期和时间 timedelta表示两个datetime值之间的差(如日,秒,微秒) tzinfo用于存储时区信息的基本类型 fromdatetimeimportdatetime now=datetime.now() now.year#当时年份 now.month#当前月份 now.day#当前天 now.time()#当前时间 datetime.time(12,27,41,303676) 两个时间戳运算得到一个timedelta(时间差)类型
日期时间差timedelta类型
fromdatetimeimporttimedelta start=datetime(2019,2,5) start+timedelta(20)#默认为天 datetime.datetime(2019,2,25,0,0)
字符串和datetime互相转换
date.strptime方法将字符串转换为时间
values='2019-8-9' datetime.strptime(values,'%Y-%m-%d')#是在已知格式的前提下转换日期的好方式 datetime.datetime(2019,8,9,0,0) datestrs=['2019-8-7','2019-8-9'] [datetime.strptime(values,'%Y-%m-%d')forvaluesindatestrs] [datetime.datetime(2019,8,7,0,0),datetime.datetime(2019,8,9,0,0)]
更为通用的日期转换格式
fromdateutil.parserimportparse
parse(values)
datetime.datetime(2019,8,9,0,0)
parse('8,5,2018',dayfirst=True)#dayfirst参数第一个元素是天
datetime.datetime(2018,5,8,0,0)
pd.to_datetime()用于轴索引或DataFrame的列
pd.to_datetime(datestrs)
DatetimeIndex(['2019-08-07','2019-08-09'],dtype='datetime64[ns]',freq=None)
更为简单的转换
datetime(2019,1,1)
datetime.datetime(2019,1,1,0,0)
时间序列的算术运算(在日期上自动对齐)
index=pd.date_range('3/3/2018',periods=20)
ts=pd.Series(np.random.randn(20),index=index)
ts
2018-03-030.611591
2018-03-040.119168
2018-03-050.514390
2018-03-061.010600
2018-03-070.181763
2018-03-08-0.290964
2018-03-090.252927
2018-03-10-1.645692
2018-03-11-0.500014
2018-03-12-1.247355
ts1=ts[::2]
2018-03-030.611591
2018-03-050.514390
2018-03-070.181763
2018-03-090.252927
2018-03-11-0.500014
2018-03-13-0.122307
2018-03-150.361237
2018-03-17-1.894853
2018-03-19-1.608989
2018-03-211.274982
Freq:2D,dtype:float64
ts+ts1
2018-03-031.223183
2018-03-04NaN
2018-03-051.028781
2018-03-06NaN
2018-03-070.363526
2018-03-08NaN
2018-03-090.505853
2018-03-10NaN
2018-03-11-1.000028
2018-03-12NaN
2018-03-13-0.244613
2018-03-14NaN
2018-03-150.722473
2018-03-16NaN
2018-03-17-3.789707
2018-03-18NaN
2018-03-19-3.217979
2018-03-20NaN
2018-03-212.549963
2018-03-22NaN
ts.index.dtype#数据;类型在纳秒级的分辨率下存储时间戳
dtype('
时间序列的索引,选择,子集
时间序列的索引
ts=pd.Series(np.random.randn(1000),index=pd.date_range('1/1/2016',periods=1000))
s['2018-6']#时间序列的索引也可用ts.loc[]
2018-06-011.371843
2018-06-02-0.356041
2018-06-030.111452
2018-06-040.325222
2018-06-05-0.863138
2018-06-06-0.115909
2018-06-070.062894
2018-06-080.223712
时间序列的切片
ts['2018-9-23':]#时间序列的切片
2018-09-230.005519
2018-09-24-1.374038
2018-09-251.769112
2018-09-26-0.000306
Freq:D,dtype:float64
ts.truncate(before='2018-9-24')#使用truncate方法向后切片
2018-09-24-1.374038
2018-09-251.769112
2018-09-26-0.000306
Freq:D,dtype:float64
ts.truncate(after='2016-1-4')#向前切片
2016-01-01-1.776334
2016-01-02-0.488550
2016-01-03-1.299889
2016-01-04-1.883413
Freq:D,dtype:float64
含有重复索引的时间序列的分组处理
index=pd.DatetimeIndex(['1/1/2017','1/1/2017','1/2/2017','1/3/2017'])
dup_ta=pd.Series(np.arange(4),index=index)
dup_ta
2017-01-010
2017-01-011
2017-01-022
2017-01-033
dtype:int32
dup_ta.groupby(level=0).mean()
以上这篇Pandas时间序列基础详解(转换,索引,切片)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。