利用python进行数据分析(八):时间序列

时间的数据分为三种:
时间戳,即特定的时刻
固定日期
时间间隔

首先

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')
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值