缺失值處理——尋找缺失值
阿新 • • 發佈:2018-01-29
afr 行記錄 尋找 一個 print () one log 說了
最近在做天池的一個比賽,真是應了那句俗語‘一竅不得,少掙幾百’。在尋找缺失值的時候看到了隊友寫的代碼,感觸頗多,想記錄下來。
缺失值處理一直是影響模型效果的重要因素,聽過好多前輩說過好的模型不如好的數據。
這次比賽是時間序列的比賽,為了盡可能達到數據的穩定。我們在分析了數據之後,決定對每個date的brand進行補充,補充的結果達到每一天都含有所有的brand。
ps:數據結構(dataframe)
1.首先這是我的:
for index in train.index: if(train.loc[index][‘brand‘] != (i+1)): if(train.loc[index][‘date‘] !=j): for m in range(5-i): num = num + 1 train.loc[num] = {‘date‘:train.loc[index][‘date‘], ‘day_of_week‘:train.loc[index][‘day_of_week‘], ‘brand‘:m+1, ‘cnt‘:med[m]} i = 0 else: for m in range(train.loc[index][‘brand‘]-i-1): num = num + 1 print(train.loc[num-1]) data_new = pd.DataFrame({‘date‘:train.loc[index][‘date‘], ‘day_of_week‘:train.loc[index][‘day_of_week‘], ‘brand‘: m+1+i, ‘cnt‘:med[m+i]}, columns=[‘date‘,‘day_of_week‘,‘brand‘,‘cnt‘]) i = train.loc[index][‘brand‘] i = (i + 1) % 5 j = train.loc[index][‘date‘]
我的想法是遍歷dataframe,然後對不符合的數進行記錄,插入到dataframe後,然後進行排序。具體就不多說了
2.這是隊友的
trs = train[[‘date‘,‘day_of_week‘]].drop_duplicates() dt = trs[‘date‘].tolist() dw = trs[‘day_of_week‘].tolist() db = [] dts = [] dws = [] for i in range(len(dt)): for m in range(1,6): dts.append(dt[i]) db.append(m) dws.append(dw[i]) try_data = pd.DataFrame({‘date‘:dts,‘day_of_week‘:dws,‘brand‘:db}) comb = pd.merge(try_data,train,how=‘left‘,on=[‘date‘,‘day_of_week‘,‘brand‘])
隊友的想法是生成兩個dataframe,然後合並,缺失值自然為none。
還是要好好向他學習
good lock to us
缺失值處理——尋找缺失值