天天看点

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分