时间的数据分为三种:
时间戳,即特定的时刻
固定日期
时间间隔
首先
from datetime import datetime
from datetime import timedelta
from dateutil.parser import parse
(1)日期和时间数据类型
datetime.now() #可以通过now属性来调取年月日
delta=datetime(2011,1,7)-datetime(2008,6,24,8,15) #求时间间隔
timedelta(12) #12天
date=datetime(2011,12,3)+timedelta(12) #可以与日期直接相加
delta就是datetime类型的数据
(2)字符串和datetime类型的互相转换
parse函数可以将大部分格式的日期字符串变换为datetime对象
parse('2013-2-16')
parse(‘6/12/2011’,dayfirst=True) #如果是day在最前面,可以使用
##pandas可以用来处理成组的日期,利用to_datetime方法。
Datestrs=['7/6/2011','8/6/2011']
pd.to_datetime(datestrs)
DatetimeIndex(['2011-07-06', '2011-08-06'], dtype='datetime64[ns]', freq=None)
(3)时间序列基础
pandas 最基础的时间序列类型就是以时间戳为索引的Series。这个索引就是DatetimeIndex。
Ts
2011-01-02 0.690002
2011-01-05 1.001543
2011-0 1-07 -0.503087
对于TimeSeries 要调取某几行
ts[‘2011-01-02’]
对于较长的时间序列,只要传入年或者年月就可以了。
Ts[‘2011’] ts[‘2011-01’]
可以利用时间戳来切片。
Ts[‘2011-01-23’:’2011-02-21’]
(4)频率和日期偏移
有时,时间的频率并不固定(不同日期之间的间隔不同),要把它们转换成相同频率(在中间添加缺失值),可以使用
ts.serample(‘D’) #'D'代表的是day
pandas.date_range(‘4/1/2012’,’6/1/2012’) #可以产生特定长度的DatetimeIndex
DatetimeIndex(['2012-04-01', '2012-04-02', '2012-04-03', '2012-04-04',
'2012-04-05', '2012-04-06', '2012-04-07', '2012-04-08',
'2012-04-09', '2012-04-10', '2012-04-11', '2012-04-12',
'2012-04-13', '2012-04-14', '2012-04-15', '2012-04-16',
'2012-04-17', '2012-04-18', '2012-04-19', '2012-04-20',
'2012-04-21', '2012-04-22', '2012-04-23', '2012-04-24',
'2012-04-25', '2012-04-26', '2012-04-27', '2012-04-28',
'2012-04-29', '2012-04-30', '2012-05-01', '2012-05-02',
'2012-05-03', '2012-05-04', '2012-05-05', '2012-05-06',
'2012-05-07', '2012-05-08', '2012-05-09', '2012-05-10',
'2012-05-11', '2012-05-12', '2012-05-13', '2012-05-14',
'2012-05-15', '2012-05-16', '2012-05-17', '2012-05-18',
'2012-05-19', '2012-05-20', '2012-05-21', '2012-05-22',
'2012-05-23', '2012-05-24', '2012-05-25', '2012-05-26',
'2012-05-27', '2012-05-28', '2012-05-29', '2012-05-30',
'2012-05-31', '2012-06-01'],
dtype='datetime64[ns]', fre q='D')
pd.date_range('1/1/2000',periods=10,freq='1h30min') #从2000-01-01开始,每隔一个半小时取一个节点,一共取10个
DatetimeIndex(['2000-01-01 00:00:00', '2000-01-01 01:30:00',
'2000-01-01 03:00:00', '2000-01-01 04:30:00',
'2000-01-01 06:00:00', '2000-01-01 07:30:00',
'2000-01-01 09:00:00', '2000-01-01 10:30:00',
'2000-01-01 12:00:00', '2000-01-01 13:30:00'],
dtype='datetime64[ns]', freq='90T')