利用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 多线程应用介绍
Dec 19 Python
利用matplotlib+numpy绘制多种绘图的方法实例
May 03 Python
解决Python的str强转int时遇到的问题
Apr 09 Python
Django实战之用户认证(初始配置)
Jul 16 Python
Python Numpy:找到list中的np.nan值方法
Oct 30 Python
详解Python函数式编程—高阶函数
Mar 29 Python
python里运用私有属性和方法总结
Jul 08 Python
使用OpenCV实现仿射变换—旋转功能
Aug 29 Python
Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式
May 11 Python
Django使用rest_framework写出API
May 21 Python
python怎么自定义捕获错误
Jun 29 Python
python 爬虫基本使用——统计杭电oj题目正确率并排序
Oct 26 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
农民和部队如何穿矿
2020/03/04 星际争霸
mysql 搜索之简单应用
2007/04/27 PHP
Chrome Web App开发小结
2014/09/04 PHP
php创建和删除目录函数介绍和递归删除目录函数分享
2014/11/18 PHP
php实现中文字符截取防乱码方法汇总
2015/04/29 PHP
使用 laravel sms 构建短信验证码发送校验功能
2017/11/06 PHP
ThinkPHP框架中使用Memcached缓存数据的方法
2018/03/31 PHP
JQuery 表格操作(交替显示、拖动表格行、选择行等)
2009/07/29 Javascript
js模仿html5 placeholder适应于不支持的浏览器
2013/01/13 Javascript
JS文本框追加多个下拉框的值的简单实例
2013/07/12 Javascript
bootstrap-treeview自定义双击事件实现方法
2016/01/09 Javascript
通过隐藏iframe实现无刷新上传文件操作
2016/03/16 Javascript
jQuery插件fullPage.js实现全屏滚动效果
2016/12/02 Javascript
JavaScript仿支付宝6位数字密码输入框
2016/12/29 Javascript
Vue.js开发环境快速搭建教程
2017/03/17 Javascript
Angular4实现图片上传预览路径不安全的问题解决
2017/12/25 Javascript
JavaScript设计模式之观察者模式(发布订阅模式)原理与实现方法示例
2018/07/27 Javascript
JavaScript高级函数应用之分时函数实例分析
2018/08/03 Javascript
JSX在render函数中的应用详解
2019/09/04 Javascript
Vue两种组件类型:递归组件和动态组件的用法
2020/08/06 Javascript
vue基于Echarts的拖拽数据可视化功能实现
2020/12/04 Vue.js
在vue中使用inheritAttrs实现组件的扩展性介绍
2020/12/07 Vue.js
JavaScript实现4位随机验证码的生成
2021/01/28 Javascript
[03:49]DOTA2 2015国际邀请赛中国区预选赛第二日现场百态
2015/05/27 DOTA
[57:50]DOTA2上海特级锦标赛主赛事日 - 4 胜者组决赛Secret VS Liquid第二局
2016/03/05 DOTA
python Django连接MySQL数据库做增删改查
2013/11/07 Python
python中zip和unzip数据的方法
2015/05/27 Python
python 与GO中操作slice,list的方式实例代码
2017/03/20 Python
Numpy之文件存取的示例代码
2018/08/03 Python
Python 解码Base64 得到码流格式文本实例
2020/01/09 Python
python pip如何手动安装二进制包
2020/09/30 Python
如何通过python计算圆周率PI
2020/11/11 Python
企业厂务公开实施方案
2014/03/26 职场文书
2014小学数学教师个人工作总结
2014/12/18 职场文书
2016年教育局“我们的节日——端午节”主题活动总结
2016/04/01 职场文书
gateway网关接口请求的校验方式
2021/07/15 Java/Android