在对海量数据进行分析的过程中,可能需要对数据中的时间列进行操作。
比如一个数据框中只有借款人的年龄(类似1994年2月8号),我们想把这一列转换成具体的岁数,放到模型中使用。
这属于特征工程的一部分,我们该怎么操作?
本节教大家如何在python中对数据框进行一些时间列的基本操作。
本文目录
注意:本文采用的数据框date_frame:
1 导入时间处理库datetime
在python中自带了datetime时间处理库,可以直接导入:
from datetime import datetime
如果想计算2001年2月1号出生的人现在的年龄,可以在python中输入如下语句:
datetime.now().year-w datetime(2001,2,1).year
得到结果如下:
19
2 根据年龄算岁数
如果想把数据框中某一年龄列算出它对应的岁数,可以在python中输入如下语句:
datetime.now().year- date_frame.birthday.dt.year
得到结果如下:
3 自定义年龄的展示形式
如果日期格式是2003-03-13,即年月日都是用-代替的,我们怎么把-替换成我们熟悉的年月日呢?
可以用year、month、day函数把用-表示的时间转化成我们熟悉的形式。
具体语句如下:
date_frame.birthday.dt.year.apply(str)+'年'+date_frame.birthday.dt.month.apply(str)+'月'+date_frame.birthday.dt.day.apply(str)+'日'
得到结果如下:
4 把字符型的数据转换成时间格式
假设我们得到了一列如下的字符格式时间:
['2003-11-3', '2002-2-5', '2000-5-1', '2001-1-1', '2002-3-1', '2004-2-7', '2003-10-9', '2002-5-1']
可以用pd.to_datetime函数把字符格式时间转换成时间格式,具体语句如下:
pd.to_datetime(['2003-11-3', '2002-2-5', '2000-5-1', '2001-1-1', '2002-3-1', '2004-2-7', '2003-10-9', '2002-5-1'])
得到结果如下:
5 对日期格式数据做减法
有时国外学生的生日可能和在我国对应的生日差一天,假设我们要对国外学生的出生日期统一减一天,可以输入如下代码:
from datetime import timedelta
pd.to_datetime(['2003-11-3', '2002-2-5', '2000-5-1', '2001-1-1', '2002-3-1', '2004-2-7', '2003-10-9', '2002-5-1']) + timedelta(days = -1)
得到结果如下:
至此,在python中对时间列进行基本操作已经介绍完毕,大家可以动手练习一下
。