利用pandas将非数值数据转换成数值的方式-创新互联
handle non numerical data
举个例子,将性别属性男女转换成0-1,精通ML的小老弟们可以略过本文~~,
这里不考虑稀疏向量的使用,仅提供一些思路。本来想直接利用pandas的DataFrame.iloc加上for循环直接转换,但试过一遍之后,原数据并有改变。。。。蛋疼写了一个比较 菜的函数,如下。
# 非数值列处理函数 def handel_non_numerical_data(df,name): #----------------name是需要处理的列名称(str),暂不考虑列表 nrows = len(df[name]) #----------------数据集的行数 old_col = df.columns.tolist() #----------------初始的列名集合 name_index = old_col.index(name) #---------要处理的列的在数据集中的索引值 name_data = df[name].values.tolist()#-----------将要处理烦人列复制成一个列表 df.drop([name],axis =1,inplace =True) unique_kinds = set(name_data) convert_dict = {}; x = 0 #构造对应种类数值转化字典 for i in unique_kinds: convert_dict[i] = x x += 1 def convert(val): return convert_dict[val] name_data = list(map(convert,name_data))#利用map函数直接迭代转化 new_col = df.columns.tolist() new_col.insert(name_index,name) df.reindex(columns = new_col) #----------------重构数据的列 df[name] = name_data
网页标题:利用pandas将非数值数据转换成数值的方式-创新互联
标题路径:http://myzitong.com/article/coiipd.html