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使用点操作符访问字典(dict)数据的方法
Mar 16 Python
python抓取百度首页的方法
May 19 Python
Python根据区号生成手机号码的方法
Jul 08 Python
Python脚本实现虾米网签到功能
Apr 12 Python
Python基于回溯法子集树模板实现图的遍历功能示例
Sep 05 Python
PyQt5实现下载进度条效果
Apr 19 Python
python实践项目之监控当前联网状态详情
May 23 Python
Python爬虫:url中带字典列表参数的编码转换方法
Aug 21 Python
关于django 1.10 CSRF验证失败的解决方法
Aug 31 Python
解决pandas展示数据输出时列名不能对齐的问题
Nov 18 Python
Python实现进度条和时间预估的示例代码
Jun 02 Python
一行代码python实现文件共享服务器
Apr 22 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
历史证明,懒惰才是推动科学发展技术进步的动力
2021/03/02 无线电
如何在PHP中使用Oracle数据库(2)
2006/10/09 PHP
如何使用jQuery+PHP+MySQL来实现一个在线测试项目
2015/04/26 PHP
WordPress中创建用户角色的相关PHP函数使用详解
2015/12/25 PHP
ThinkPHP中order()使用方法详解
2016/04/19 PHP
php基于自定义函数记录log日志方法
2017/07/21 PHP
使用ExtJS技术实现的拖动树结点
2010/08/05 Javascript
jquery lazyload延迟加载技术的实现原理分析
2011/01/24 Javascript
在IE浏览器中resize事件执行多次的解决方法
2011/07/12 Javascript
javaScript年份下拉列表框内容为当前年份及前后50年
2014/05/28 Javascript
BootStrap 动态添加验证项和取消验证项的实现方法
2016/09/28 Javascript
Angular2 PrimeNG分页模块学习
2017/01/14 Javascript
AngularJs中 ng-repeat指令中实现含有自定义指令的动态html的方法
2017/01/19 Javascript
CodeMirror js代码加亮使用总结
2017/03/25 Javascript
Javascript中的async awai的用法
2017/05/17 Javascript
JavaScript运行原理分析
2018/02/09 Javascript
JQuery模拟实现网页中自定义鼠标右键菜单功能
2018/11/14 jQuery
了解重排与重绘
2019/05/29 Javascript
十条建议帮你提高Python编程效率
2016/02/16 Python
python+opencv实现的简单人脸识别代码示例
2017/11/14 Python
Python 判断 有向图 是否有环的实例讲解
2018/02/01 Python
Django实现文件上传下载
2019/10/06 Python
python安装gdal的两种方法
2019/10/29 Python
python interpolate插值实例
2020/07/06 Python
纯CSS实现菜单、导航栏的3D翻转动画效果
2014/04/23 HTML / CSS
德国奢侈品网上商城:Mytheresa
2016/08/24 全球购物
Jimmy Choo美国官网:周仰杰鞋子品牌
2018/06/08 全球购物
小学毕业家长寄语
2014/01/19 职场文书
IT工程师岗位职责
2014/07/04 职场文书
人事专员岗位职责说明书
2014/07/30 职场文书
管理工程专业求职信
2014/08/10 职场文书
公司授权委托书样本
2014/09/15 职场文书
2015年社区创卫工作总结
2015/04/21 职场文书
电影焦裕禄观后感
2015/06/09 职场文书
redis哨兵常用命令和监控示例详解
2021/05/27 Redis
MySQL 服务和数据库管理
2021/11/11 MySQL