Python 时间的处理
标签(空格分隔): python 数据分析
日期以及时间数据类型
日期 data, 时间 time
datatime是包含data以及time 的数据类型
timedelta两个datatime之间的差值
字符串和datatime的转化
datetime转换成字符串
stamp = datetime(2011, 1, 3)
str(stamp)
stamp.strftime('%Y-%m-%d') #可以自己定义格式
字符串转datetime
value = '2011-01-03'
stamp = datetime.strptime(value, '%Y-%m-%d')
还有一种很方便的就是通过第三方包dateutil
from dateutil.parser import parser
stamp = parser('2011-03-11') #parser几乎对所有格式时间都可以转化,但是对有歧义的需要小心,最后自己手动指明参数datefirst=true
pandas处理成组日期
datestrs = ['7/6/2011', '8/6/2011']
pd.to_datetime(datestrs+['None']) #pandas会将缺失值处理成NaT(Not a Time)
- %Y 4位数的年
- %y 2位数的年
- %m 2位数的月
- %d 2位数的日
- %H 24小时 %I12小时
- %M 2位数的分
- %S 秒0, 61
- %w 一周星期几
- %U [00, 53]每年的第多少周,第一个星期天前被认为是第0周
- %W [00, 53]每年的第多少周,第一个星期一前被认为是第0周
- %F %Y-%m-%d的缩写
- %D %m/%d/%y的缩写
- %a 星期几简写 %A星期几全写
- %b 月份简写 %B月份全写
Pandas时间片段
tmp = pd.date_range('1/1/2000', periods=1000)
longer_ts = Series(np.random.randn(1000), index=tmp)
longer_ts['2001'] #就可以把2001年的都取出来
#通过日期进行切片的方式只对规则Series有效???
longer_ts['1/6/2001':'1/11/2011'] #这里时间戳的日期可以不存在
带重复索引的时间序列,然后可以聚合
pd.date_range('1/1/2000', '10/1/2000', freq='BM)
BM表示每月的最后一个工作日