利用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 错误和异常小结
Oct 09 Python
python中随机函数random用法实例
Apr 30 Python
Django发送html邮件的方法
May 26 Python
Python序列操作之进阶篇
Dec 08 Python
关于Python元祖,列表,字典,集合的比较
Jan 06 Python
python绘制铅球的运行轨迹代码分享
Nov 14 Python
基于随机梯度下降的矩阵分解推荐算法(python)
Aug 31 Python
python安装virtualenv虚拟环境步骤图文详解
Sep 18 Python
Python连接mysql数据库及简单增删改查操作示例代码
Aug 03 Python
OpenCV利用python来实现图像的直方图均衡化
Oct 21 Python
python-图片流传输的思路及示例(url转换二维码)
Dec 21 Python
yolov5返回坐标的方法实例
Mar 17 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编写注册后Email激活验证的实例代码
2013/03/11 PHP
php用header函数实现301跳转代码实例
2013/11/25 PHP
php 数据结构之链表队列
2017/10/17 PHP
PHP count()函数讲解
2019/02/03 PHP
filemanage功能中用到的common.js
2007/04/08 Javascript
javascript 一段左右两边随屏滚动的代码
2009/06/18 Javascript
JAVASCRIPT函数作用域和提前声明 分享
2013/08/22 Javascript
Jquery原生态实现表格header头随滚动条滚动而滚动
2014/03/18 Javascript
jQuery简单图表peity.js使用示例
2014/05/02 Javascript
ExpressJS入门实例
2015/01/14 Javascript
jQuery中的pushStack实现原理和应用实例
2015/02/03 Javascript
js实现点击图片改变页面背景图的方法
2015/02/28 Javascript
JavaScript动态加载样式表的方法
2015/03/21 Javascript
基于js里调用函数时,函数名带括号和不带括号的区别
2016/07/28 Javascript
javascript 中设置window.location.href跳转无效问题解决办法
2017/02/09 Javascript
nodejs操作mysql实现增删改查的实例
2017/05/28 NodeJs
简单的vuex 的使用案例笔记
2018/04/13 Javascript
Vue触发隐藏input file的方法实例详解
2019/08/14 Javascript
vue框架中props的typescript用法详解
2020/02/17 Javascript
javascript利用键盘控制小方块的移动
2020/04/20 Javascript
Vue项目开发常见问题和解决方案总结
2020/09/11 Javascript
js前端传json后台接收‘‘被转为quot的问题解决
2020/11/12 Javascript
解决python写入mysql中datetime类型遇到的问题
2018/06/21 Python
python查看模块,对象的函数方法
2018/10/16 Python
Pytorch 多块GPU的使用详解
2019/12/31 Python
django配置app中的静态文件步骤
2020/03/27 Python
PyTorch在Windows环境搭建的方法步骤
2020/05/12 Python
Python实现Excel自动分组合并单元格
2021/02/22 Python
html5 viewport使用方法示例详解
2013/12/02 HTML / CSS
电影T恤、80年代T恤和80年代服装:TV Store Online
2020/01/05 全球购物
农民入党思想汇报
2014/01/03 职场文书
老师的检讨书
2014/02/23 职场文书
仓库管理员岗位职责
2014/03/19 职场文书
房屋继承公证书
2014/04/10 职场文书
投资入股协议书
2016/03/22 职场文书
python spilt()分隔字符串的实现示例
2021/05/21 Python