1. 程式人生 > >缺失值處理——尋找缺失值

缺失值處理——尋找缺失值

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

缺失值處理——尋找缺失值