時間戳: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分