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表示忽略原来的索引
目前编程水平有限,如果您有较好的方法,也可以留言给我,感谢!