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删除文件示例分享
Jan 28 Python
Python 递归函数详解及实例
Dec 27 Python
解决出现Incorrect integer value: '' for column 'id' at row 1的问题
Oct 29 Python
numpy中索引和切片详解
Dec 15 Python
Python采集代理ip并判断是否可用和定时更新的方法
May 07 Python
终端命令查看TensorFlow版本号及路径的方法
Jun 13 Python
关于python列表增加元素的三种操作方法
Aug 22 Python
python 搭建简单的http server,可直接post文件的实例
Jan 03 Python
pycharm无法安装第三方库的问题及解决方法以scrapy为例(图解)
May 09 Python
通过实例解析python创建进程常用方法
Jun 19 Python
python 多线程死锁问题的解决方案
Aug 25 Python
Python中的pprint模块
Nov 27 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中的Class的几点个人看法
2006/10/09 PHP
java微信开发之上传下载多媒体文件
2016/06/24 PHP
基于yaf框架和uploadify插件,做的一个导入excel文件,查看并保存数据的功能
2017/01/24 PHP
PHP中Notice错误常见解决方法
2017/04/28 PHP
Yii2.0建立公共方法简单示例
2019/01/29 PHP
Javascript 面向对象特性
2009/12/28 Javascript
基于JavaScript 类的使用详解
2013/05/07 Javascript
js获得指定控件输入光标的坐标兼容IE,Chrome,火狐等多种主流浏览器
2013/05/21 Javascript
js中一维数组和二位数组中的几个问题示例说明
2014/07/17 Javascript
原生js和jquery分别实现横向导航菜单效果
2016/05/13 Javascript
学习使用Bootstrap页面排版样式
2017/05/11 Javascript
Angular.js中window.onload(),$(document).ready()的写法浅析
2017/09/28 Javascript
vue项目打包后提交到git上为什么没有dist这个文件的解决方法
2020/09/16 Javascript
Python基于DES算法加密解密实例
2015/06/03 Python
Python实现完整的事务操作示例
2017/06/20 Python
Django使用httpresponse返回用户头像实例代码
2018/01/26 Python
Python+request+unittest实现接口测试框架集成实例
2018/03/16 Python
pycharm 将django中多个app放到同个文件夹apps的处理方法
2018/05/30 Python
django项目用higcharts统计最近七天文章点击量
2019/08/17 Python
sklearn-SVC实现与类参数详解
2019/12/10 Python
Keras - GPU ID 和显存占用设定步骤
2020/06/22 Python
详解利用python识别图片中的条码(pyzbar)及条码图片矫正和增强
2020/11/17 Python
J2EE是技术还是平台还是框架
2016/08/14 面试题
电气专业推荐信范文
2013/11/18 职场文书
秋季运动会广播稿大全
2014/02/17 职场文书
餐厅筹备计划书
2014/04/25 职场文书
《谁的本领大》教后反思
2014/04/25 职场文书
研发工程师岗位职责
2014/04/28 职场文书
计算机科学与技术专业求职信
2014/09/03 职场文书
技术股份合作协议书
2014/10/05 职场文书
法人单位授权委托书范文
2014/10/06 职场文书
2015年综治维稳工作总结
2015/04/07 职场文书
节约用电倡议书
2015/04/28 职场文书
2016入党培训心得体会范文
2016/01/08 职场文书
2019单位介绍信怎么写
2019/06/24 职场文书
Eclipse+Java+Swing+Mysql实现电影购票系统(详细代码)
2022/01/18 Java/Android