最近無聊,想玩玩數據挖掘,就拿天池的天池新人實戰賽之[離線賽]練練手。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']