利用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分析apache访问日志脚本分享
Feb 26 Python
在Python中使用swapCase()方法转换大小写的教程
May 20 Python
Django框架中方法的访问和查找
Jul 15 Python
Python中基础的socket编程实战攻略
Jun 01 Python
Python使用numpy产生正态分布随机数的向量或矩阵操作示例
Aug 22 Python
Python面向对象程序设计示例小结
Jan 30 Python
Python实现FTP文件传输的实例
Jul 07 Python
python使用pandas抽样训练数据中某个类别实例
Feb 28 Python
浅谈TensorFlow中读取图像数据的三种方式
Jun 30 Python
去除python中的字符串空格的简单方法
Dec 22 Python
Python游戏开发实例之graphics实现AI五子棋
Nov 01 Python
Python+tkinter实现高清图片保存
Mar 13 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 setcookie() cannot modify header information 的解决方法
2009/01/09 PHP
使用phpQuery采集网页的方法
2013/11/13 PHP
Laravel框架路由配置总结、设置技巧大全
2014/09/03 PHP
浅谈PHP的exec()函数无返回值排查方法(必看)
2017/03/31 PHP
JavaScript的jQuery库中function的存在和参数问题
2015/08/13 Javascript
JavaScript引用类型和基本类型详解
2016/01/06 Javascript
JavaScript数组合并的多种方法
2016/05/22 Javascript
JS定时器使用,定时定点,固定时刻,循环执行详解
2016/05/31 Javascript
Node.js与MySQL交互操作及其注意事项
2016/10/05 Javascript
理解JavaScript原型链
2016/10/25 Javascript
easyui简介_动力节点Java学院整理
2017/07/14 Javascript
微信小程序使用Promise简化回调
2018/02/06 Javascript
使用proxy实现一个更优雅的vue【推荐】
2018/06/19 Javascript
JavaScript函数的特性与应用实践深入详解
2018/12/30 Javascript
微信小程序云开发之模拟后台增删改查
2019/05/16 Javascript
javascript触发模拟鼠标点击事件
2019/06/26 Javascript
关于layui 实现点击按钮添加一行(方法渲染创建的table)
2019/09/29 Javascript
webpack打包优化的几个方法总结
2020/02/10 Javascript
vue实现全屏滚动效果(非fullpage.js)
2020/03/07 Javascript
JS函数本身的作用域实例分析
2020/03/16 Javascript
[02:00]DOTA2英雄COSPLAY闹市街头巡游助威2015国际邀请赛
2015/08/02 DOTA
使用python在校内发人人网状态(人人网看状态)
2014/02/19 Python
Python中几种导入模块的方式总结
2017/04/27 Python
python自动化测试之如何解析excel文件
2019/06/27 Python
Apache部署Django项目图文详解
2019/07/30 Python
Python之多进程与多线程的使用
2021/02/23 Python
检测浏览器对HTML5和CSS3支持度的方法
2015/06/25 HTML / CSS
GANT英国官方网上商店:甘特衬衫
2018/02/06 全球购物
美国健康和保健平台:healtop
2020/07/02 全球购物
幼儿园门卫制度
2014/01/29 职场文书
白血病募捐倡议书
2014/05/14 职场文书
承德避暑山庄导游词
2015/02/03 职场文书
孩子满月酒答谢词
2015/09/30 职场文书
成功的商业计划书这样写才最靠谱
2019/07/12 职场文书
redis使用不当导致应用卡死bug的过程解析
2021/07/01 Redis
MySQL系列之十二 备份与恢复
2021/07/02 MySQL