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框架与认证系统整合的方法
Jul 24 Python
Python中index()和seek()的用法(详解)
Apr 27 Python
Python实现两款计算器功能示例
Dec 19 Python
python中itertools模块zip_longest函数详解
Jun 12 Python
利用Python进行数据可视化常见的9种方法!超实用!
Jul 11 Python
使用python对excle和json互相转换的示例
Oct 23 Python
如何使用pyinstaller打包32位的exe程序
May 26 Python
python with (as)语句实例详解
Feb 04 Python
Python 基于FIR实现Hilbert滤波器求信号包络详解
Feb 26 Python
Python使用Matlab命令过程解析
Jun 04 Python
Python用dilb提取照片上人脸的示例
Oct 26 Python
解决Pytorch中关于model.eval的问题
May 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
自己动手做一个SQL解释器
2006/10/09 PHP
php不允许用户提交空表单(php空值判断)
2013/11/12 PHP
php 获取SWF动画截图示例代码
2014/02/10 PHP
PHP实现在数据库百万条数据中随机获取20条记录的方法
2017/04/19 PHP
PHP 7安装调试工具Xdebug扩展的方法教程
2017/06/17 PHP
PHP实现的简单适配器模式示例
2017/06/22 PHP
Smarty模板配置实例简析
2019/07/20 PHP
浅谈laravel-admin的sortable和orderby使用问题
2019/10/03 PHP
javascript中的继承实例代码
2011/04/27 Javascript
jquery 判断滚动条到达了底部和顶端的方法
2014/04/02 Javascript
jQuery操作select下拉框的text值和value值的方法
2014/05/31 Javascript
jQuery选择器querySelector的使用指南
2015/01/23 Javascript
干货分享:让你分分钟学会javascript闭包
2015/12/25 Javascript
浅谈javascript中的加减时间
2016/07/12 Javascript
Angularjs单选改为多选的开发过程及问题解析
2017/02/17 Javascript
javascript 秒表计时器实现代码
2017/03/09 Javascript
WebSocket实现简单客服聊天系统
2017/05/12 Javascript
文本溢出插件jquery.dotdotdot.js使用方法详解
2017/06/22 jQuery
使用命令行工具npm新创建一个vue项目的方法
2017/12/27 Javascript
vue如何解决循环引用组件报错的问题
2018/09/22 Javascript
element-ui如何防止重复提交的方法步骤
2019/12/09 Javascript
JQuery绑定事件四种实现方法解析
2020/12/02 jQuery
vue基于Echarts的拖拽数据可视化功能实现
2020/12/04 Vue.js
详解ES6 中的Object.assign()的用法实例代码
2021/01/11 Javascript
python学习笔记之调用eval函数出现invalid syntax错误问题
2015/10/18 Python
python的变量与赋值详细分析
2017/11/08 Python
如何用python写一个简单的词法分析器
2018/12/18 Python
Django Xadmin多对多字段过滤实例
2020/04/07 Python
HTML5中drawImage用法分析
2014/12/01 HTML / CSS
家乐福巴西网上超市:Carrefour巴西
2016/10/31 全球购物
彪马加拿大官网:PUMA加拿大
2018/10/04 全球购物
高中班主任评语大全
2014/04/25 职场文书
2015年爱牙日活动总结
2015/02/05 职场文书
灵魂歌王观后感
2015/06/17 职场文书
仅用几行Python代码就能复制她的U盘文件?
2021/06/26 Python
CSS子盒子水平和垂直居中的五种方法
2022/07/23 HTML / CSS