利用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通过pil为png图片填充上背景颜色的方法
Mar 17 Python
学习python类方法与对象方法
Mar 15 Python
python学习之面向对象【入门初级篇】
Jan 21 Python
Python中列表list以及list与数组array的相互转换实现方法
Sep 22 Python
Python实现的根据文件名查找数据文件功能示例
May 02 Python
pycharm使用matplotlib.pyplot不显示图形的解决方法
Oct 28 Python
Django  ORM 练习题及答案
Jul 19 Python
Python实现栈和队列的简单操作方法示例
Nov 29 Python
利用django model save方法对未更改的字段依然进行了保存
Mar 28 Python
Pycharm修改python路径过程图解
May 22 Python
Python图像阈值化处理及算法比对实例解析
Jun 19 Python
openstack中的rpc远程调用的方法
Jul 09 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
一个MYSQL操作类
2006/11/16 PHP
PHP 截取字符串 分别适合GB2312和UTF8编码情况
2009/02/12 PHP
PHP高级OOP技术演示
2009/08/27 PHP
基于magic_quotes_gpc与magic_quotes_runtime的区别与使用介绍
2013/04/22 PHP
php解析xml提示Invalid byte 1 of 1-byte UTF-8 sequence错误的处理方法
2013/11/14 PHP
PHP+shell脚本操作Memcached和Apache Status的实例分享
2016/03/11 PHP
PHP图片裁剪与缩放示例(无损裁剪图片)
2017/02/08 PHP
Convert Seconds To Hours
2007/06/16 Javascript
Jquery 滑入滑出效果实现代码
2010/03/27 Javascript
JavaScript异步加载浅析
2014/12/28 Javascript
angularjs自定义ng-model标签的属性
2016/01/21 Javascript
浅谈javascript中遇到的字符串对象处理
2016/11/18 Javascript
微信小程序开发之Tabbar实例详解
2017/01/09 Javascript
BootStrap表单控件之文本域textarea
2017/05/23 Javascript
LayUI数据接口返回实体封装的例子
2019/09/12 Javascript
Vue.js watch监视属性知识点总结
2019/11/11 Javascript
nodejs中使用archive压缩文件的实现代码
2019/11/26 NodeJs
详解为什么Vue中不要用index作为key(diff算法)
2020/04/04 Javascript
Python实现求最大公约数及判断素数的方法
2015/05/26 Python
深入理解Python中装饰器的用法
2016/06/28 Python
Python实现按特定格式对文件进行读写的方法示例
2017/11/30 Python
Python进程间通信Queue实例解析
2018/01/25 Python
Python使用pyh生成HTML文档的方法示例
2018/03/10 Python
Python中format()格式输出全解
2019/04/12 Python
python 3.7.4 安装 opencv的教程
2019/10/10 Python
CSS3解析抖音LOGO制作的方法步骤
2019/04/11 HTML / CSS
Gweniss格温妮丝女包官网:英国纯手工制造潮流包包品牌
2018/02/07 全球购物
英国最大的纸工艺品商店:CraftStash
2018/12/01 全球购物
英国最受欢迎的平价女士时装零售商:Roman Originals
2019/11/02 全球购物
华硕新加坡官方网上商店:ASUS Singapore
2020/07/09 全球购物
红领巾广播站广播稿
2014/02/01 职场文书
大学生作弊检讨书
2014/09/11 职场文书
2014年精神文明工作总结
2014/12/23 职场文书
golang实现一个简单的websocket聊天室功能
2021/10/05 Golang
MySQL多表查询机制
2022/03/17 MySQL
Redis批量生成数据的实现
2022/06/05 Redis