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正则表达式匹配ip地址实例
Oct 09 Python
使用Python的urllib2模块处理url和图片的技巧两则
Feb 18 Python
tensorflow实现简单的卷积网络
May 24 Python
PyCharm代码整体缩进,反向缩进的方法
Jun 25 Python
python虚拟环境迁移方法
Jan 03 Python
Python 运行 shell 获取输出结果的实例
Jan 07 Python
使用python爬取微博数据打造一颗“心”
Jun 28 Python
python super的使用方法及实例详解
Sep 25 Python
Python for循环及基础用法详解
Nov 08 Python
Python字典中的值为列表或字典的构造实例
Dec 16 Python
python:批量统计xml中各类目标的数量案例
Mar 10 Python
python中pd.cut()与pd.qcut()的对比及示例
Jun 16 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中读取照片exif信息的方法
2014/08/20 PHP
日常整理PHP中简单的图形处理(经典)
2015/10/26 PHP
利用php生成验证码
2017/02/23 PHP
详解PHP版本兼容之openssl调用参数
2018/07/25 PHP
JS 页面自动加载函数(兼容多浏览器)
2009/05/18 Javascript
在VS2008中使用jQuery智能感应的方法
2010/12/30 Javascript
jquery ready函数、css函数及text()使用示例
2013/09/27 Javascript
jQuery 插件开发指南
2014/11/14 Javascript
JS获取当前脚本文件的绝对路径
2016/03/02 Javascript
js数组常用操作方法小结(增加,删除,合并,分割等)
2016/08/02 Javascript
原生js实现焦点轮播图效果
2017/01/12 Javascript
Bootstrap.css与layDate日期选择样式起冲突的解决办法
2017/04/07 Javascript
protractor的安装与基本使用教程
2017/07/07 Javascript
ES6 javascript的异步操作实例详解
2017/10/30 Javascript
理解 JavaScript EventEmitter
2018/03/29 Javascript
浅谈Angular7 项目开发总结
2018/12/19 Javascript
npm的lock机制解析
2019/06/20 Javascript
React实现阿里云OSS上传文件的示例
2020/08/10 Javascript
JavaScript字符串转数字的简单实现方法
2020/11/27 Javascript
使用jquery实现轮播图效果
2021/01/02 jQuery
[01:33]PWL开团时刻DAY2-开雾与反开雾
2020/10/31 DOTA
Python中字符串对齐方法介绍
2015/05/21 Python
Django 2.0版本的新特性抢先看!
2018/01/05 Python
Python 、Pycharm、Anaconda三者的区别与联系、安装过程及注意事项
2019/10/11 Python
利用python实现PSO算法优化二元函数
2019/11/13 Python
Python非单向递归函数如何返回全部结果
2020/12/18 Python
HTML5声音录制/播放功能的实现代码
2018/05/03 HTML / CSS
建筑系毕业生自我鉴定
2014/01/24 职场文书
国培教师自我鉴定
2014/02/12 职场文书
党员干部公开承诺书
2014/03/26 职场文书
再读《皇帝的新衣》的读后感悟!
2019/08/07 职场文书
如何使用Python对NetCDF数据做空间相关分析
2021/04/21 Python
Vue实现下拉加载更多
2021/05/09 Vue.js
JavaScript如何优化逻辑判断代码详解
2021/06/08 Javascript
WCG2010 星际争霸决赛 Flash vs Goojila 1 星际经典比赛回顾
2022/04/01 星际争霸
数据分析数据库ClickHouse在大数据领域应用实践
2022/04/03 MySQL