天天看點

pandas資料可視化(二)時間日期

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