时间戳:pd.Timestamp,固定的时刻
时间期间:pd.Period,特殊的时间间隔
时间间隔:interval
一、时间的操作:
from datetime import datetime
from datetime import timedelta
dt_1=datetime.now() #输出:2018-04-26 12:40:37.895676
dt_1.year #输出:2018
#时间加减————————
dt_2=datetime(2016, 5, 3) #输出:2016-05-03 00:00:00
dt_3=datetime(2016, 5, 7)
dt_4=dt_2-dt_3 #输出:-4 days, 0:00:00
dt_4.days #输出:-4
dt_4.total_seconds() #输出:-345600.0
#时间间隔——————————————————————————————————————————
dt_5=dt_3+timedelta(3.5) #2016-05-10 12:00:00
#时间转字符串————————————————————————————————————————
str(dt_5) #输出:2016-05-10 12:00:00 <class 'str'>,时间转成字符串
dt_5.strftime("%y/%m/%d %H:%M:%S") #输出:16/05/10 12:00:00,小写y,年份2位数,将时间转成格式化字符串
dt_5.strftime("%Y/%m") #输出:2016/05,大写Y将时间转成格式化字符串,年份4位数。
#字符串转时间——————————————————————————————————————————————
dt_6=datetime.strptime("2016-05-10 12:00","%Y-%m-%d %H:%M" )#输出:2016-05-10 12:00:00,字符串年份4位数,Y字符大写,小写不可。
二、创建时间系列:
#创建时间系列
date_s=[datetime(2016,3,2), datetime(2017,1,2), datetime(2018,3,5)]
s=pd.Series(np.random.rand(3), index=date_s)
s.index # DatetimeIndex(['2016-03-02', '2017-01-02', '2018-03-05'], dtype='datetime64[ns]', freq=None)
type(s.index) #输出:<class 'pandas.core.indexes.datetimes.DatetimeIndex'>,索引为时间索引类型
type(s.index[0]) #输出:<class 'pandas._libs.tslib.Timestamp'>,索引的元素类型为时间戳类型
pd.date_range("2018/02/01", "2018-02-6") #日期格式为"2018-02-01","20180201","2018/02/01"
DatetimeIndex(['2018-02-01', '2018-02-02', '2018-02-03', '2018-02-04','2018-02-05', '2018-02-06'], dtype='datetime64[ns]', freq='D')
时间戳系列pd.date_range
pd.date_range("2018/02/01",periods=10, freq='M',normalize=True) #periods default值1,fred default值fred=‘D’
#freqw值:'4H','M','D',
DatetimeIndex(['2018-02-28', '2018-03-31', '2018-04-30', '2018-05-31',
'2018-06-30', '2018-07-31', '2018-08-31', '2018-09-30',
'2018-10-31', '2018-11-30'],
dtype='datetime64[ns]', freq='M')
时间期间系列pd.period_range
时间周期的转换:asfreq
c=pd.Period('2016-4', freq='M') #输出:2016
d=c.asfreq('A-DEC') #输出:2016
d=c.asfreq('A-MAR') #输出:2017。'A-MAR'以当年3月份作为年终,那么2016-4就视为2017年了。
e=pd.Period('2016Q4', freq='Q-JAN') #输出:2016Q4
print(e.asfreq('M', how='start'), e.asfreq('M', how='end')) #输出:2015-11,2016-01
e=(e.asfreq('B')-1).asfreq('T')+16*60+20 #输出:2016-01-29 16:19
#获取本季度末倒数第2个工作日16点20分