利用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查看zip包中文件及大小的方法
Jul 09 Python
pycharm+django创建一个搜索网页实例代码
Jan 24 Python
python3实现163邮箱SMTP发送邮件
May 22 Python
python创造虚拟环境方法总结
Mar 04 Python
Python中使用logging和traceback模块记录日志和跟踪异常
Apr 09 Python
python实现在函数中修改变量值的方法
Jul 16 Python
python模拟鼠标点击和键盘输入的操作
Aug 04 Python
python numpy实现多次循环读取文件 等间隔过滤数据示例
Mar 14 Python
Python json读写方式和字典相互转化
Apr 18 Python
Django crontab定时任务模块操作方法解析
Sep 10 Python
Python使用for生成列表实现过程解析
Sep 22 Python
Python实现自动玩连连看的脚本分享
Apr 04 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
全国FM电台频率大全 - 21 海南省
2020/03/11 无线电
PHP跨时区(UTC时间)应用解决方案
2013/01/11 PHP
PHP asXML()函数讲解
2019/02/03 PHP
浅析PHP7的多进程及实例源码
2019/04/14 PHP
asp.net下使用jquery 的ajax+WebService+json 实现无刷新取后台值的实现代码
2010/09/19 Javascript
使用jQuery+HttpHandler+xml模拟一个三级联动的例子
2011/08/09 Javascript
比例尺、缩略图、平移缩放之百度地图添加控件方法
2015/08/03 Javascript
jQuery+Ajax+PHP弹出层异步登录效果(附源码下载)
2016/05/27 Javascript
利用JS提交表单的几种方法和验证(必看篇)
2016/09/17 Javascript
学习 NodeJS 第八天:Socket 通讯实例
2016/12/21 NodeJs
基于jQuery实现选项卡效果
2017/01/04 Javascript
微信小程序 Template详解及简单实例
2017/01/05 Javascript
详解微信小程序 相对定位和绝对定位
2017/05/11 Javascript
详解无限滚动插件vue-infinite-scroll源码解析
2019/05/12 Javascript
用JS实现选项卡
2020/03/23 Javascript
Element中Slider滑块的具体使用
2020/07/29 Javascript
vue中使用echarts的示例
2021/01/03 Vue.js
Python是编译运行的验证方法
2015/01/30 Python
python自动zip压缩目录的方法
2015/06/28 Python
详解python时间模块中的datetime模块
2016/01/13 Python
使用pandas读取csv文件的指定列方法
2018/04/21 Python
python内置函数sorted()用法深入分析
2019/10/08 Python
AmazeUI底部导航栏与分享按钮的示例代码
2020/08/18 HTML / CSS
家乐福台湾线上购物网:Carrefour台湾
2020/09/15 全球购物
Douglas意大利官网:购买香水和化妆品
2020/05/27 全球购物
PHP经典面试题
2016/09/03 面试题
CSMA/CD介质访问控制协议
2015/11/17 面试题
竞选团支书演讲稿
2014/04/28 职场文书
80后婚前协议书范本
2014/10/24 职场文书
社会治安综合治理责任书
2015/01/29 职场文书
死者家属慰问信
2015/03/24 职场文书
退休欢送会主持词
2015/07/01 职场文书
Nginx工作原理和优化总结。
2021/04/02 Servers
SpringCloud Alibaba 基本开发框架搭建过程
2021/06/13 Java/Android
JavaWeb 入门篇(3)ServletContext 详解 具体应用
2021/07/16 Java/Android
redis中lua脚本使用教程
2021/11/01 Redis