日期和时间数据类型及工具
python标准库包含于日期(data)和时间(time)数据的数据类型,datetime ime以及calendar模块会被经常用到
datetime以毫秒形式存储日期和时间,datetime.timedelta表示两个datetime对象之间的时间差
给datetime对象加上或减去一个或多个timedelta,会产生一个新的对象。
datetime模块中的数据类型
date:以公历形式存储日历日期(年、月、日)
time:将时间存储时、分、秒、毫秒
datetime:存储和日期
timedelta:表示两个datetime值之间的差(日、秒、毫秒)
字符串和datetime的相互转换
1)Python标准库函数
日期转换成字符串:利用str或strftime
字符串转换成日期:datetime.strptime
2)第三方库dateutil.parser的时间解析函数
3)pandas处理成组日期
pandas通常用于处理成组日期,不管这些日期是DataFrame的轴索引还是列,to_datetime方法可以解析多种不同的日期表示形式
pandas时间序列基础以及时间、日期处理
pandas最基本的时间序列类型就是以时间戳(时间点)(通常以python字符串或datetime对象表示)为索引的series
pandas不同索引的时间序列之间的算术运算会自动按日期对齐
索引为日期的Series和DataFrame数据的索引、选取以及子集构造方法
1).index[number_int] #得到序列值
2)[一个可以被解析为日期的字符串]
3)对于较长的时间序列,只需要传入年或年月可返回对应的数据切片
带有重复索引的时间序列
1).index.is_unique检查索引日期是否是惟一的
2)对于非唯一时间戳的数据进行聚合,通过groupby,并传入level=0(索引的唯一一层)
1 from datetime import datetime 2 3 stamp=datetime(2017,6,27) 4 5 str(stamp) 6 7 stamp.strftime("%y-%m-%d") 8 9 #对多个时间进行解析成字符串 10 date=["2017-6-26","2017-6-27"] 11 12 datetime2=[datetime.strptime(x,"%Y-%m-%d") for x in date] 13 14 datetime2 15 16 17 #第三方库dateutil.parser的时间解析函数 18 from dateutil.parser import parse 19 20 parse('2017-6-27') 21 22 parse("27/6/2017",dayfirst=True) 23 24 25 date 26 27 import pandas as pd 28 pd.to_datetime(date) 29 30 31 32 ###pandas时间序列基础及时间、日期处理 33 dates=['2017-06-20','2017-06-21','2017-06-22','2017-06-23','2017-06-24','2017-06-25','2017-06-26','2017-06-27'] 34 35 import numpy as np 36 ts=pd.Series(np.random.randn(8),index=pd.to_datetime(dates)) 37 38 #pandas不同索引的时间序列之间的算术运算会自动按日期对齐 39 ts[::2] 40 41 ts+ts[::2] 42 43 44 ###索引为日期的Series和DataFrame数据的索引、选取以及子集构造方法 45 ts[ts.index[2]] 46 47 ts["2017-06-21"] #传入可以被解析成日期的字符串 48 49 ts['21/06/2017'] 50 51 ts['20170621'] 52 53 ts["2017-06"] 54 55 ts['2017-06-20':'2017-06-23'] 56 57 58 ###带有重复索引的时间序列 59 dates=pd.DatetimeIndex(['2017/06/01','2017/06/02','2017/06/02','2017/06/02','2017/06/03']) 60 dates 61 62 dup_ts=pd.Series(np.arange(5),index=dates) 63 dup_ts 64 65 dup_ts.index.is_unique 66 67 dup_ts["2017-06-02"] 68 69 grouped=dup_ts.groupby(level=0).mean() #索引的唯一一层 70 71 72 73 dup_df=pd.DataFrame(np.arange(10).reshape((5,2)),index=dates) 74 dup_df 75 76 grouped_df=dup_df.groupby(level=0).mean()
-----摘自:https://blog.csdn.net/ly_ysys629/article/details/73822716