利用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的字典和列表的使用中一些需要注意的地方
Apr 24 Python
在Python操作时间和日期之asctime()方法的使用
May 22 Python
Python判断直线和矩形是否相交的方法
Jul 14 Python
python中函数默认值使用注意点详解
Jun 01 Python
Python中文件I/O高效操作处理的技巧分享
Feb 04 Python
Python中staticmethod和classmethod的作用与区别
Oct 11 Python
python字典值排序并取出前n个key值的方法
Oct 17 Python
在python 中实现运行多条shell命令
Jan 07 Python
python实现画五角星和螺旋线的示例
Jan 20 Python
python tkinter库实现气泡屏保和锁屏
Jul 29 Python
详解python中的数据类型和控制流
Aug 08 Python
解决pycharm中导入自己写的.py函数出错问题
Feb 12 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 作用域解析运算符(::)
2010/07/27 PHP
迅速确定php多维数组的深度的方法
2014/01/07 PHP
Symfony2函数用法实例分析
2016/03/18 PHP
JQuery团队打造的javascript单元测试工具QUnit介绍
2010/02/26 Javascript
DOM Scripting中的图片切换[兼容Firefox]
2010/06/12 Javascript
JavaScript中继承的一些示例方法与属性参考
2010/08/07 Javascript
js控制鼠标事件移动及移出效果显示
2014/10/19 Javascript
JS中三目运算符和if else的区别分析与示例
2014/11/21 Javascript
JS实现图片产生波纹一样flash效果的方法
2015/02/27 Javascript
初识Node.js
2015/03/20 Javascript
JS实现左右拖动改变内容显示区域大小的方法
2015/10/13 Javascript
javascript创建对象的几种模式介绍
2016/05/06 Javascript
浅谈几种常用的JS类定义方法
2016/06/08 Javascript
详解jQuery插件开发方式
2016/11/22 Javascript
手动初始化Angular的模块与控制器
2016/12/26 Javascript
全面解析vue中的数据双向绑定
2017/05/10 Javascript
详解用Webpack与Babel配置ES6开发环境
2019/03/12 Javascript
[01:05:40]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第三场
2014/05/24 DOTA
[01:01:43]EG vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
python将多个文本文件合并为一个文本的代码(便于搜索)
2011/03/13 Python
python改变日志(logging)存放位置的示例
2014/03/27 Python
Python访问MySQL封装的常用类实例
2014/11/11 Python
python操作redis的方法
2015/07/07 Python
Python中matplotlib中文乱码解决办法
2017/05/12 Python
Django集成CAS单点登录的方法示例
2019/06/10 Python
Django打印出在数据库中执行的语句问题
2019/07/25 Python
Pyqt5自适应布局实例
2019/12/13 Python
python每5分钟从kafka中提取数据的例子
2019/12/23 Python
Python面向对象中类(class)的简单理解与用法分析
2020/02/21 Python
Python图像读写方法对比
2020/11/16 Python
网上卖盒饭创业计划书范文
2014/02/07 职场文书
个人借款担保书
2014/04/02 职场文书
劳动仲裁代理词范文
2015/05/25 职场文书
2015年学校精神文明工作总结
2015/05/27 职场文书
Apache Hudi的多版本清理服务彻底讲解
2022/03/31 Servers
Go语言编译原理之源码调试
2022/08/05 Golang