利用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 相关文章推荐
一个检测OpenSSL心脏出血漏洞的Python脚本分享
Apr 10 Python
深入理解Javascript中的this关键字
Mar 27 Python
用Python实现斐波那契(Fibonacci)函数
Mar 25 Python
Python环境下安装使用异步任务队列包Celery的基础教程
May 07 Python
实例解析Python的Twisted框架中Deferred对象的用法
May 25 Python
Python科学计算之Pandas详解
Jan 15 Python
Python操作Excel插入删除行的方法
Dec 10 Python
对matplotlib改变colorbar位置和方向的方法详解
Dec 13 Python
python自定义函数实现一个数的三次方计算方法
Jan 20 Python
python3实现表白神器
Apr 09 Python
python入门:argparse浅析 nargs='+'作用
Jul 12 Python
Python pysnmp使用方法及代码实例
Aug 24 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
CodeIgniter删除和设置Cookie的方法
2015/04/07 PHP
详解php设置session(过期、失效、有效期)
2015/11/12 PHP
php微信公众号开发模式详解
2016/11/28 PHP
PHP实现多级分类生成树的方法示例
2017/02/07 PHP
php实现页面纯静态的实例代码
2017/06/21 PHP
JQUERY实现左侧TIPS滑进滑出效果示例
2013/06/27 Javascript
判断iframe里的页面是否加载完成
2014/06/06 Javascript
jquery实现表格本地排序的方法
2015/03/11 Javascript
JS表单验证的代码(常用)
2016/04/08 Javascript
js实现点击图片自动提交action的简单方法
2016/10/16 Javascript
微信小程序 滚动到某个位置添加class效果实现代码
2017/04/19 Javascript
vue 进阶之实现父子组件间的传值
2019/04/26 Javascript
微信小程序开发实现消息推送
2020/11/18 Javascript
Quasar Input:type="number" 去掉上下小箭头 实现加减按钮样式功能
2020/04/09 Javascript
vue路由权限校验功能的实现代码
2020/06/07 Javascript
解决vue刷新页面以后丢失store的数据问题
2020/08/11 Javascript
Python装饰器的函数式编程详解
2015/02/27 Python
python实现网站的模拟登录
2016/01/04 Python
深入解析Python中的__builtins__内建对象
2016/06/21 Python
python递归函数绘制分形树的方法
2018/06/22 Python
搞清楚 Python traceback的具体使用方法
2019/05/13 Python
浅谈Python type的使用
2019/11/19 Python
Jupyter notebook快速入门教程(推荐)
2020/05/18 Python
keras中的History对象用法
2020/06/19 Python
南非领先的在线旅行社:Travelstart南非
2016/09/04 全球购物
STAY JAPAN台湾:预订日本民宿
2018/07/22 全球购物
阿德的梦教学反思
2014/02/06 职场文书
企业安全生产承诺书
2014/05/22 职场文书
2014年十八届四中全会思想汇报范文
2014/10/17 职场文书
2015年企业新年寄语
2014/12/08 职场文书
2015年社区中秋节活动总结
2015/03/23 职场文书
pytorch显存一直变大的解决方案
2021/04/08 Python
Python selenium的这三种等待方式一定要会!
2021/06/10 Python
使用canvas对video视频某一刻截图功能
2021/09/25 HTML / CSS
星际争霸:毕姥爷vs解冻01
2022/04/01 星际争霸
OpenStack虚拟机快照和增量备份实现方法
2022/04/04 Servers