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爬虫入门教程之点点美女图片爬虫代码分享
Sep 02 Python
Python爬取Coursera课程资源的详细过程
Nov 04 Python
Python的Flask框架中配置多个子域名的方法讲解
Jun 07 Python
Python编程中对super函数的正确理解和用法解析
Jul 02 Python
彻底搞懂Python字符编码
Jan 23 Python
python删除文本中行数标签的方法
May 31 Python
pyqt5 lineEdit设置密码隐藏,删除lineEdit已输入的内容等属性方法
Jun 24 Python
python PIL和CV对 图片的读取,显示,裁剪,保存实现方法
Aug 07 Python
用python写测试数据文件过程解析
Sep 25 Python
python序列化与数据持久化实例详解
Dec 20 Python
python如何处理程序无法打开
Jun 16 Python
Python+uiautomator2实现自动刷抖音视频功能
Apr 29 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
WordPress中is_singular()函数简介
2015/02/05 PHP
PHP文件操作实例总结
2016/09/27 PHP
老生常谈PHP面向对象之命令模式(必看篇)
2017/05/24 PHP
Flash对联广告的关闭按钮讨论
2007/01/30 Javascript
javascript dom 基本操作小结
2010/04/11 Javascript
高性能WEB开发 flush让页面分块,逐步呈现 flush让页面分块,逐步呈现
2010/06/19 Javascript
JS实现简单的顶部定时关闭层效果
2014/06/15 Javascript
跟我学习javascript的闭包
2015/11/16 Javascript
基于jquery实现轮播特效
2016/04/22 Javascript
bootstrap fileinput完整实例分享
2016/11/08 Javascript
Bootstrap基本模板的使用和理解1
2016/12/14 Javascript
详解webpack 多入口配置
2017/06/16 Javascript
jQuery实现简单的计时器功能实例分析
2017/08/29 jQuery
ES6中Class类的静态方法实例小结
2017/10/28 Javascript
Vue中使用vux配置代码详解
2018/09/16 Javascript
vue改变循环遍历后的数据实例
2019/11/07 Javascript
解决vue中的无限循环问题
2020/07/27 Javascript
[04:36]DOTA2国际邀请赛 ti3精彩集锦
2013/08/19 DOTA
[01:35]2014DOTA2西雅图邀请赛 专访狐狸妈青春献给刀塔
2014/07/08 DOTA
[04:40]2016个国际邀请赛中国区预选赛场地——华西村观战指南
2016/06/25 DOTA
Python  pip安装lxml出错的问题解决办法
2017/02/10 Python
使用python在本地电脑上快速处理数据
2017/06/22 Python
对Python3之进程池与回调函数的实例详解
2019/01/22 Python
django创建简单的页面响应实例教程
2019/09/06 Python
Tensorflow实现多GPU并行方式
2020/02/03 Python
养成教育经验材料
2014/05/26 职场文书
学雷锋标兵事迹材料
2014/08/18 职场文书
加薪申请报告范本
2015/05/15 职场文书
经济纠纷起诉状
2015/05/20 职场文书
电视新闻稿
2015/07/17 职场文书
2016党员发展对象培训心得体会
2016/01/08 职场文书
话题作文之自信作文
2019/11/15 职场文书
正确使用MySQL INSERT INTO语句
2021/05/26 MySQL
一文搞懂python异常处理、模块与包
2021/06/26 Python
python flappy bird小游戏分步实现流程
2022/02/15 Python
关于k8s环境部署mysql主从的问题
2022/03/13 MySQL