問題描述:在數據預處理時,往往需要對描述性數據進行分類賦值或對數據進行分級賦值。
首先,會想到用for循環,依次判斷賦值:
for n in range(len(data1)): print(n) if data1['文化程度'][n] == '小學': data1['文化程度得分'][n] = 1 elif data1['文化程度'][n] == '初中': data1['文化程度得分'][n] = 2 elif data1['文化程度'][n] == '高中': data1['文化程度得分'][n] = 3 elif data1['文化程度'][n] == '大專': data1['文化程度得分'][n] = 4 elif data1['文化程度'][n] == '本科及以上': data1['文化程度得分'][n] = 5
else:
data1['文化程度得分'][n] = 0
但是,當數據量較大時,這種處理方式十分耗時
於是尋找其他方式,利用.loc選取數據進行賦值,由於目前對python還處於初級階段,沒有找到直接賦值的簡單方法,於是先利用.loc選取,再用.concat將數據拼接起來
1 da1 = data.loc[data['文化程度'] == '小學'] 2 da1['文化程度得分'] = 1 3 da2 = data.loc[data['文化程度'] == '初中'] 4 da2['文化程度得分'] = 2 5 da3 = data.loc[data['文化程度'] == '高中'] 6 da3['文化程度得分'] = 3 7 da4 = data.loc[data['文化程度'] == '大專'] 8 da4['文化程度得分'] = 4 9 da5 = data.loc[data['文化程度'] == '本科及以上'] 10 da5['文化程度得分'] = 5 11 da6 = data.loc[data['文化程度'] == '文盲或半文盲'] 12 da6['文化程度得分'] = 0 13 da7 = data.loc[data['文化程度'].isnull()] 14 da7['文化程度得分'] = 0 15 data1 = pd.concat([da1,da2,da3,da4,da5,da6,da7],axis=0,ignore_index=True)
#參數axis=0表示上下合並,1表示左右合並,ignore_index=True表示忽略原來的索引
目前編程水平有限,如果您有較好的方法,也可以留言給我,感謝!