python数据预处理之将类别数据转换为数值的方法


Posted in Python onJuly 05, 2017

在进行python数据分析的时候,首先要进行数据预处理。

有时候不得不处理一些非数值类别的数据,嗯, 今天要说的就是面对这些数据该如何处理。

目前了解到的大概有三种方法:

1,通过LabelEncoder来进行快速的转换;

2,通过mapping方式,将类别映射为数值。不过这种方法适用范围有限;

3,通过get_dummies方法来转换。

import pandas as pd
from io import StringIO

csv_data = '''A,B,C,D
1,2,3,4
5,6,,8
0,11,12,'''

df = pd.read_csv(StringIO(csv_data))
print(df)
#统计为空的数目
print(df.isnull().sum())
print(df.values)

#丢弃空的
print(df.dropna())
print('after', df)
from sklearn.preprocessing import Imputer
# axis=0 列  axis = 1 行
imr = Imputer(missing_values='NaN', strategy='mean', axis=0)
imr.fit(df) # fit 构建得到数据
imputed_data = imr.transform(df.values) #transform 将数据进行填充
print(imputed_data)

df = pd.DataFrame([['green', 'M', 10.1, 'class1'],
          ['red', 'L', 13.5, 'class2'],
          ['blue', 'XL', 15.3, 'class1']])
df.columns =['color', 'size', 'price', 'classlabel']
print(df)

size_mapping = {'XL':3, 'L':2, 'M':1}
df['size'] = df['size'].map(size_mapping)
print(df)

## 遍历Series
for idx, label in enumerate(df['classlabel']):
  print(idx, label)

#1, 利用LabelEncoder类快速编码,但此时对color并不适合,
#看起来,好像是有大小的
from sklearn.preprocessing import LabelEncoder
class_le = LabelEncoder()
color_le = LabelEncoder()
df['classlabel'] = class_le.fit_transform(df['classlabel'].values)
#df['color'] = color_le.fit_transform(df['color'].values)
print(df)

#2, 映射字典将类标转换为整数
import numpy as np
class_mapping = {label: idx for idx, label in enumerate(np.unique(df['classlabel']))}
df['classlabel'] = df['classlabel'].map(class_mapping)
print('2,', df)


#3,处理1不适用的
#利用创建一个新的虚拟特征
from sklearn.preprocessing import OneHotEncoder
pf = pd.get_dummies(df[['color']])
df = pd.concat([df, pf], axis=1)
df.drop(['color'], axis=1, inplace=True)
print(df)

以上这篇python数据预处理之将类别数据转换为数值的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python的Django中django-userena组件的简单使用教程
May 30 Python
Python3 实现随机生成一组不重复数并按行写入文件
Apr 09 Python
朴素贝叶斯分类算法原理与Python实现与使用方法案例
Jun 26 Python
Python面向对象之类的内置attr属性示例
Dec 14 Python
python使用Qt界面以及逻辑实现方法
Jul 10 Python
centos7之Python3.74安装教程
Aug 15 Python
Python高级特性 切片 迭代解析
Aug 23 Python
Python使用itchat模块实现群聊转发,自动回复功能示例
Aug 26 Python
python读取ini配置文件过程示范
Dec 23 Python
Python装饰器用法与知识点小结
Mar 09 Python
jupyter 中文乱码设置编码格式 避免控制台输出的解决
Apr 20 Python
matlab、python中矩阵的互相导入导出方式
Jun 01 Python
利用Python3分析sitemap.xml并抓取导出全站链接详解
Jul 04 #Python
在django中使用自定义标签实现分页功能
Jul 04 #Python
详解django中自定义标签和过滤器
Jul 03 #Python
pygame实现弹力球及其变速效果
Jul 03 #Python
[原创]使用豆瓣提供的国内pypi源
Jul 02 #Python
python中安装Scrapy模块依赖包汇总
Jul 02 #Python
Python使用filetype精确判断文件类型
Jul 02 #Python
You might like
PHP.MVC的模板标签系统(四)
2006/09/05 PHP
基于HTTP长连接的"服务器推"技术的php 简易聊天室
2009/10/31 PHP
一道关于php变量引用的面试题
2010/08/08 PHP
PHP编程中的常见漏洞和代码实例
2014/08/06 PHP
ThinkPHP结合AjaxFileUploader实现无刷新文件上传的方法
2014/10/29 PHP
asp 取文本框名称代码
2008/12/02 Javascript
两个比较有用的Javascript工具函数代码
2010/02/17 Javascript
jQuery超精致图片轮播幻灯片特效代码分享
2015/09/10 Javascript
JavaScript数组的栈方法与队列方法详解
2016/05/26 Javascript
CSS3 media queries结合jQuery实现响应式导航
2016/09/30 Javascript
jQuery中的deferred使用方法
2017/03/27 jQuery
Vue中父组件向子组件通信的方法
2017/07/11 Javascript
快速将Vue项目升级到webpack3的方法步骤
2017/09/14 Javascript
javascript trie前缀树的示例
2018/01/29 Javascript
用vue2.0实现点击选中active其他选项互斥的效果
2018/04/12 Javascript
Node.js实现简单的爬取的示例代码
2019/06/25 Javascript
layui写后台表格思路和赋值用法详解
2019/11/14 Javascript
在arcgis使用python脚本进行字段计算时是如何解决中文问题的
2015/10/18 Python
对pandas数据判断是否为NaN值的方法详解
2018/11/06 Python
pytz格式化北京时间多出6分钟问题的解决方法
2019/06/21 Python
python画图--输出指定像素点的颜色值方法
2019/07/03 Python
python中的Elasticsearch操作汇总
2019/10/30 Python
简单了解Python读取大文件代码实例
2019/12/18 Python
基于Python实现人脸自动戴口罩系统
2020/02/06 Python
从零开始的TensorFlow+VScode开发环境搭建的步骤(图文)
2020/08/31 Python
python 解决Windows平台上路径有空格的问题
2020/11/10 Python
python UDF 实现对csv批量md5加密操作
2021/01/01 Python
在python3.9下如何安装scrapy的方法
2021/02/03 Python
商务英语专业应届毕业生求职信
2013/10/28 职场文书
汇源肾宝广告词
2014/03/20 职场文书
村长党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
邀请函范文
2015/02/02 职场文书
关于调整工作时间的通知
2015/04/24 职场文书
董事长助理工作总结2015
2015/07/23 职场文书
2016暑期社会实践新闻稿
2015/11/25 职场文书
python opencv检测直线 cv2.HoughLinesP的实现
2021/06/18 Python