最近无聊,想玩玩数据挖掘,就拿天池的天池新人实战赛之[离线赛]练练手。https://tianchi.aliyun.com/getStart/information.htm?spm=5176.100067.5678.2.2b282b2bAOqNmy&raceId=231522
其中在处理数据时,我需要以日期为索引,比如将前6天的数据作为训练集,第7天的数据作为预测集。下图是阿里给的数据。
由于我们需要按天来统计数据,所以暂时认为几点购买的这个信息没什么用,我想去掉。要怎么去掉呢?
我们可以看到,时间列是object类型,先对其进行转换。
然后这里有几种方法去除时间:
上图的第二句话是设置时间为索引。
第二种方法:
all_user['time'] = pd.to_datetime(all_user['time']).dt.date
这种方法很慢,请不要轻易尝试。
或者:
all_user['time'] = pd.to_datetime(all_user['time']).dt.floor('d')
具体可以参考:https://stackoverflow.com/questions/16176996/keep-only-date-part-when-using-pandas-to-datetime。
然后我们就可以分割数据为训练集和预测集了。
train_user = all_user['2014-11-22':'2014-11-27'] train_user_predict = all_user['2014-11-28'] valid_user = all_user['2014-11-29':'2014-12-04'] valid_user_predict = all_user['2014-12-05'] test_user = all_user['2014-12-13':'2014-12-18'] test_user_predict = all_user['2014-12-19']