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


Posted in Python onDecember 18, 2019

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

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

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

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

Python 相关文章推荐
Python内置函数Type()函数一个有趣的用法
Feb 18 Python
Python3实现从文件中读取指定行的方法
May 22 Python
Python 数据结构之队列的实现
Jan 22 Python
Python中Django发送带图片和附件的邮件
Mar 31 Python
python读文件保存到字典,修改字典并写入新文件的实例
Apr 23 Python
python队列queue模块详解
Apr 27 Python
使用python将大量数据导出到Excel中的小技巧分享
Jun 14 Python
Python3获取拉勾网招聘信息的方法实例
Apr 03 Python
pyqt实现.ui文件批量转换为对应.py文件脚本
Jun 19 Python
python把ipynb文件转换成pdf文件过程详解
Jul 09 Python
python图片指定区域替换img.paste函数的使用
Apr 09 Python
python 实现控制鼠标键盘
Nov 27 Python
python 浅谈serial与stm32通信的编码问题
Dec 18 #Python
基于numpy中的expand_dims函数用法
Dec 18 #Python
Python.append()与Python.expand()用法详解
Dec 18 #Python
python getopt模块使用实例解析
Dec 18 #Python
pytorch制作自己的LMDB数据操作示例
Dec 18 #Python
Python Gluon参数和模块命名操作教程
Dec 18 #Python
python turtle 绘制太极图的实例
Dec 18 #Python
You might like
php懒人函数 自动添加数据
2011/06/28 PHP
深入理解require与require_once与include以及include_once的区别
2013/06/05 PHP
解析php中die(),exit(),return的区别
2013/06/20 PHP
利用php生成验证码
2017/02/23 PHP
thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法
2018/09/07 PHP
Prototype Hash对象 学习
2009/07/19 Javascript
jQuery 表单验证扩展(四)
2010/10/20 Javascript
线路分流自动智能跳转代码,自动选择最快镜像网站(js)
2011/10/31 Javascript
javascript实现在下拉列表中显示多级树形菜单的方法
2015/08/12 Javascript
学习JavaScript设计模式之模板方法模式
2016/01/20 Javascript
JS集成fckeditor及判断内容是否为空的方法
2016/05/27 Javascript
JS原型链 详解及示例代码
2016/09/06 Javascript
H5移动端图片压缩上传开发流程
2016/11/09 Javascript
nodejs构建本地web测试服务器 如何解决访问静态资源问题
2017/07/14 NodeJs
微信小程序中使用Promise进行异步流程处理的实例详解
2017/08/17 Javascript
js移动端图片压缩上传功能
2020/08/18 Javascript
js阻止默认右键的下拉菜单方法
2018/01/02 Javascript
使用vue官方提供的模板vue-cli搭建一个helloWorld案例分析
2018/01/16 Javascript
对vuejs的v-for遍历、v-bind动态改变值、v-if进行判断的实例讲解
2018/08/27 Javascript
angularJs复选框checkbox选中进行ng-show显示隐藏的方法
2018/10/08 Javascript
在js代码拼接dom对象到页面上的模板总结
2018/10/21 Javascript
使用PYTHON接收多播数据的代码
2012/03/01 Python
简介Django中内置的一些中间件
2015/07/24 Python
python遍历序列enumerate函数浅析
2017/10/17 Python
pyqt 实现QlineEdit 输入密码显示成圆点的方法
2019/06/24 Python
pytorch数据预处理错误的解决
2020/02/20 Python
pytorch判断是否cuda 判断变量类型方式
2020/06/23 Python
如何在Anaconda中打开python自带idle
2020/09/21 Python
python简单实现插入排序实例代码
2020/12/16 Python
车贷收入证明范本
2014/01/09 职场文书
母亲七十大寿答谢词
2014/01/18 职场文书
工程质量承诺书
2014/03/27 职场文书
乡镇党建工作汇报材料
2014/10/27 职场文书
2014年科室工作总结
2014/11/20 职场文书
初级职称评定工作总结
2015/08/13 职场文书
Spark SQL 2.4.8 操作 Dataframe的两种方式
2021/10/16 SQL Server