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 相关文章推荐
windows下wxPython开发环境安装与配置方法
Jun 28 Python
Python version 2.7 required, which was not found in the registry
Aug 26 Python
跟老齐学Python之编写类之一创建实例
Oct 11 Python
详解Python验证码识别
Jan 25 Python
使用python在本地电脑上快速处理数据
Jun 22 Python
OpenCV+python手势识别框架和实例讲解
Aug 03 Python
python对于requests的封装方法详解
Jan 03 Python
python实现windows壁纸定期更换功能
Jan 21 Python
浅谈PySpark SQL 相关知识介绍
Jun 14 Python
深入了解Django View(视图系统)
Jul 23 Python
Anaconda 查看、创建、管理和使用python环境的方法
Dec 03 Python
浅谈Python数学建模之固定费用问题
Jun 23 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 解决session死锁的方法
2013/06/20 PHP
在WordPress中实现发送http请求的相关函数解析
2015/12/29 PHP
PHP MySql增删改查的简单实例
2016/06/21 PHP
PHP二维数组去重算法
2016/12/17 PHP
PhpStorm本地断点调试的方法步骤
2018/05/21 PHP
解决 firefox 不支持 document.all的方法
2007/03/12 Javascript
jquery 可排列的表实现代码
2009/11/13 Javascript
jquery jqPlot API 中文使用教程(非常强大的图表工具)
2011/08/15 Javascript
jquery ajax应用中iframe自适应高度问题解决方法
2014/04/12 Javascript
JavaScript中的DSL元编程介绍
2015/03/15 Javascript
js闭包实现按秒计数
2015/04/23 Javascript
基于HTML5上使用iScroll实现下拉刷新,上拉加载更多
2016/05/21 Javascript
深入理解JavaScript定时机制
2016/10/27 Javascript
HTML5 js实现拖拉上传文件功能
2020/11/20 Javascript
JS简单判断滚动条的滚动方向实现方法
2017/04/28 Javascript
深入浅析Nodejs的Http模块
2017/06/20 NodeJs
jquery插件开发之选项卡制作详解
2017/08/30 jQuery
4 种滚动吸顶实现方式的比较
2019/04/09 Javascript
vue中js判断长时间不操作界面自动退出登录(推荐)
2020/01/22 Javascript
[01:11:02]Secret vs Newbee 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python异常处理总结
2014/08/15 Python
Python 模板引擎的注入问题分析
2017/01/01 Python
详解如何为eclipse安装合适版本的python插件pydev
2018/11/04 Python
python requests post多层字典的方法
2018/12/27 Python
python递归法解决棋盘分割问题
2019/07/17 Python
世界首屈一指的在线男士内衣权威:HisRoom
2017/08/05 全球购物
维多利亚的秘密官方旗舰店:VICTORIA’S SECRET
2018/04/02 全球购物
DERMAdoctor官网:美国著名皮肤护理品牌
2019/07/06 全球购物
传播学毕业生求职信
2013/10/11 职场文书
计算机专业大学生的自我评价
2013/11/14 职场文书
《寓言两则》教学反思
2014/02/27 职场文书
社会实践活动总结范文
2014/07/03 职场文书
2016年综治宣传月活动宣传标语口号
2016/03/16 职场文书
班组长如何制订适合本班组的工作计划?
2019/07/10 职场文书
一个成功的互联网创业项目,必须满足这些要求
2019/08/23 职场文书
Vue操作Storage本地化存储
2022/04/29 Vue.js