利用pandas将非数值数据转换成数值的方式

 更新时间:2019年12月18日 15:39:20   作者:可以调素琴  
今天小编就为大家分享一篇利用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

跑了一遍没有出错,注意这只是baseline…,如果对数值有要求的话,需要自行改动

原本是想直接用youtube上sentdex老哥ml35期视频里的代码的,但发现了几个较为严重的bug,而且总是运行出错 ,如下

def handle_non_numerical_data(df):
 columns = df.columns.values
 for column in columns:
 text_digit_vals = {}
 def convert_to_int(val):
  return text_digit_vals[val]
 if df[column].dtype != np.int64 and df[column].dtype != np.float64:
  column_content = df[column].values.tolist()
  unique_elements = set(column_content)
  print(unique_elements)
  x =0
  for unique in unique_elements:
  if unique not in text_digit_vals:
   text_digit_vals[unique] = x
   x+=1
 df[column] = list(map(convert_to_int,df[column]))

可见,非常暴力,注意到他的if条件,有的数据集中会出现字母数字组合的情况【会出现dtype=object的情况】,set之后种类会草鸡多…,这样的话数值转换也就失去了意义【当然,如果你的样本量是亿级的,几千几百个种类无所谓我也无fuck说,这种情况我认为必须使用稀疏向量了】,另外这个代码一直报错,不知道为什么,有兴趣的老哥可以复制跑一下帮我解答一下。。。

---------------------------2019-08-21分割:

https://www.kaggle.com/nroman/recursive-feature-elimination

LabelEncoder方法

from sklearn.preprocessing import LabelEncoder

注:tqdm是进度条库,不需要关注。另外没有去看这个接口的源码,应该也是最简单的one-hot

以上这篇利用pandas将非数值数据转换成数值的方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python concurrent.futures模块使用实例

    Python concurrent.futures模块使用实例

    这篇文章主要介绍了Python concurrent.futures模块使用实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • Python+Pygame实战之文字剧情游戏的实现

    Python+Pygame实战之文字剧情游戏的实现

    这篇文章主要为大家详细介绍了如何利用Python和Pygame实现两款文字剧情游戏——《巨龙之洞》和《太空矿工》,感兴趣的小伙伴可以了解一下
    2022-12-12
  • Python使用ClickHouse的实践与踩坑记录

    Python使用ClickHouse的实践与踩坑记录

    这篇文章主要介绍了Python使用ClickHouse的实践与踩坑记录,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • Python实现计算AUC的三种方式总结

    Python实现计算AUC的三种方式总结

    AUC(Area under curve)是机器学习常用的二分类评测手段,直接含义是ROC曲线下的面积。本文总结了Python语言实现计算AUC的三种方式,感兴趣的可以学习一下
    2022-07-07
  • python批量替换多文件字符串问题详解

    python批量替换多文件字符串问题详解

    批量替换是我们在日常工作中经常会遇到的一个问题,下面这篇文章主要给大家介绍了关于python批量替换多文件字符串问题的相关资料,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧。
    2018-04-04
  • Python解决C盘卡顿问题及操作脚本示例

    Python解决C盘卡顿问题及操作脚本示例

    这篇文章主要为大家介绍了Python解决C盘卡顿问题脚本示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • python项目中requirements.txt的用法实例教程

    python项目中requirements.txt的用法实例教程

    Python项目中必须包含一个requirements.txt文件,用于记录所有依赖包及其精确的版本号,以便新环境部署,下面这篇文章主要给大家介绍了关于python项目中requirements.txt用法的相关资料,需要的朋友可以参考下
    2022-06-06
  • 浅谈pytorch 模型 .pt, .pth, .pkl的区别及模型保存方式

    浅谈pytorch 模型 .pt, .pth, .pkl的区别及模型保存方式

    这篇文章主要介绍了浅谈pytorch 模型 .pt, .pth, .pkl的区别及模型保存方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • django用户登录验证的完整示例代码

    django用户登录验证的完整示例代码

    这篇文章主要给大家介绍了关于django用户登录验证的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Spring django具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-07-07
  • Python无头爬虫下载文件的实现

    Python无头爬虫下载文件的实现

    这篇文章主要介绍了Python无头爬虫下载文件的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04

最新评论