时间戳tiimestamp:固定的时刻->pd.Timestamp
固定时期period:比如2016年3月份,再如2015年销售额->pd.Period
时间间隔interval:由起始时间和结束时间来表示,固定时期是时间间隔的一个特殊
时间日期在Pandas里的作用:分析金融数据,如股票交易数据
1 import pandas as pd 2 import numpy as np 3 4 # 处理时间需要用到的包 5 from datetime import datetime 6 from datetime import timedelta 7 8 now = datetime.now() # 输出当前的时间 9 # 例如输出 datetime.datetime(2019, 8, 23, 17, 45, 13, 291738) 10 now.year,now.month,now.day # 输出年月日 (2019, 8, 23) 11 12 data1 = datetime(2016, 4, 20) 13 data2 = datetime(2016, 4, 16) 14 delta = data1 - data2 # 输出datetime.timedelta(4) 15 delta.days # 输出4 16 delta.total_seconds() #输出间隔345600.0秒 17 data2 + delta # 返回某天的日期datetime.datetime(2016, 4, 20, 0, 0) 18 data2 + timedelta(4.5) #4.5天,它将输出datetime.datetime(2016, 4, 20, 12, 0) 19 20 date = datetime(2016,3,20,8,30) 21 str(date) # 将date转换成字符串形式'2016-03-20 08:30:00' 22 date.strftime("%Y/%m/%d %H:%M:%S") # 格式化输出'2016/03/20 08:30:00' 23 24 datetime.strptime('2016-03-20 09:30', '%Y-%m-%d %H:%M') 25 # 去格式化输出datetime.datetime(2016, 3, 20, 9, 30) 26 27 dates = [datetime(2016,3,1),datetime(2016,3,2), 28 datetime(2016,3,3),datetime(2016,3,4)] 29 s = pd.Series(np.random.randn(4),index=dates) 30 # 将时间变成索引以Series方式输出 31 type(s.index) # 它的返回值pandas.core.indexes.datetimes.DatetimeIndex 32 type(s.index[0]) # 它的返回值pandas._libs.tslibs.timestamps.Timestamp 33 34 pd.date_range('20160320','20160330') # 输出时间列表,间隔频率默认为/D 35 36 pd.date_range('20160320 16:32:38',periods=10,normalize=True) 37 # 输出10天间隔频率默认为/D即每天,采用正则化normalize=True去掉16:32:38 38 39 pd.date_range('20160320',periods=10, freq='M') 40 # 输出每个月的月末时间,总共连续10个月,时间间隔频率是月 41 # freq=BM(每个月最后一个工作日)、W以周为频率、4H以4小时为频率 42 43 44 45 46 p = pd.Period(2010, freq='M') # 以月份为时间段,输出Period('2010-01', 'M') 47 p+2 # 就会输输出Period('2010-03', 'M') 48 49 pd.period_range('2016-01',periods=10,freq='M') 50 # 以月份为间隔频率输出连续10个月 51 52 pd.period_range('2016Q1',periods=10,freq='Q') 53 # 以季节为间隔频率输出连续的10个季节 54 55 56 a = pd.Period(2016) # 它的默认频段为年 57 a.asfreq('M') # 输出Period('2016-12', 'M') 以最后一个月为时期默认频段变为月 58 a.asfreq('M',how='start') # 时期变为1月 Period('2016-01', 'M') 59 p = pd.Period('2016-04',freq='M') # 自定义时期Period('2016-04', 'M') 60 61 # 62 p.asfreq('A-DEC') #频率转换为以年为单位12月结束 输出 Period('2016', 'A-DEC') 63 p.asfreq('A-MAR') #介入月份变为3月份时时间就到了2017年3月份 64 65 p = pd.Period('2016Q4','Q-JAN') # 以一月份结束的季度 66 # 下一行可以知道2016Q4的起始时间与结束时间 67 p.asfreq('M',how='start'), p.asfreq('M',how='end') 68 69 # 获取该季度倒数第二个工作日下午4点20分 70 (p.asfreq('B') - 1).asfreq('T') + 16 * 60 +20