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表示忽略原来的索引

 

目前编程水平有限,如果您有较好的方法,也可以留言给我,感谢!

posted @ 2019-04-22 22:05  Python白小白  阅读(2265)  评论(0编辑  收藏  举报