python 數據分類賦值


問題描述:在數據預處理時,往往需要對描述性數據進行分類賦值或對數據進行分級賦值。

首先,會想到用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表示忽略原來的索引

 

目前編程水平有限,如果您有較好的方法,也可以留言給我,感謝!
 
        


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM