数据处理之数据类型转换

  • 1. 概述
  • 2. 读取数据
  • 3. 分类型转数值型
    • 3.1 map()函数
    • 3.2 repalce()函数
    • 3.3 LabelEncoder(推荐)
    • 3.4 get_dummies()函数
    • 3.5 OneHotEncoder
  • 4. 连续型转离散型
    • 4.1 等宽法
    • 4.2 等频法
    • 4.3 二值化
  • 5. 小结

点赞、关注再看,养成良好习惯
Life is short, U need Python
初学Python,快来点我吧

1. 概述

本文主要以小费数据集(tips.csv)为例,介绍数据预处理中常用到的不同数据类型转换方法。

  • 分类型数据转换成数值型;
  • 连续型数据转换成离散型。

首先,对小费数据集做一简单介绍:

  • tips包含244个样本,对应数据集的每行数据。每行数据包含每个样本的七个特征(总消费金额、小费金额、顾客性别、顾客是否抽烟、聚餐的星期、聚餐的时间段、聚餐人数),所以tips数据集是一个244行7列的二维表。
  • 其中,总消费金额(total_bill)和小费金额(tip)均为连续型数据集;顾客性别(sex)、是否抽烟(smoker)、聚餐的星期(day)、聚餐的时间段(time)均为分类型数据;聚餐人数(size)为离散型数据。

2. 读取数据

import pandas as pd
tips = pd.read_csv('tips.csv')
tips.head()

读取结果如上图所示(tips数据集是seaborn自带数据集,也可以在线下载读取)。

3. 分类型转数值型

3.1 map()函数

df1 = tips.copy()dict1 = {'Male':0,'Female':1}       # 设置字典参数
df1.sex = df1.sex.map(dict1)
dict2 = {'No':0,'Yes':1}
df1.smoker = df1.smoker.map(dict2)
dict3 = {'Sun':6, 'Sat':5, 'Thur':3, 'Fri':4}
df1.day = df1.day.map(dict3)
dict4 = {'Dinner':0, 'Lunch':1}
df1.time = df1.time.map(dict4)df1.head()

3.2 repalce()函数

df2 = tips.copy()df2.sex = df2.sex.replace(df2.sex.unique(),[0,1])
df2.smoker = df2.smoker.replace(df2.smoker.unique(),[0,1])
df2.day = df2.day.replace(df2.day.unique(),[6,5,3,4])
df2.time = df2.time.replace(df2.time.unique(),[0,1])df2.head()

3.3 LabelEncoder(推荐)

df3 = tips.copy()from sklearn.preprocessing import LabelEncoderdf3.sex = LabelEncoder().fit_transform(df3.sex)
df3.smoker = LabelEncoder().fit_transform(df3.smoker)
df3.day = LabelEncoder().fit_transform(df3.day)
df3.time = LabelEncoder().fit_transform(df3.time)df3.head()

3.4 get_dummies()函数

df4 = tips.copy()df4 = pd.get_dummies(df4.iloc[:,2:-1])  # 返回pd.DataFrame对象df4.head()

df4 = tips.copy()df4 = pd.get_dummies(df4,columns=['sex','smoker','day','time'])  # 返回pd.DataFrame对象df4.head()

  • 注:这样可以避免数据的再次合并!

3.5 OneHotEncoder

df5 = tips.copy()from sklearn.preprocessing import OneHotEncodermat = OneHotEncoder().fit_transform(df5.iloc[:,2:-1])    # 返回sparse matrix对象
arr = arr.toarray()   # 返回np.array对象
arr

4. 连续型转离散型

tips.describe()

4.1 等宽法

data1 = tips.copy()data1.total_bill = pd.cut(x=data1.total_bill,bins=4,labels=range(0,4))
data1.tip = pd.cut(x=data1.tip,bins=4,labels=range(0,4))data1.head()

4.2 等频法

data2 = tips.copy()data2.total_bill = pd.cut(x=data2.total_bill,bins=4,labels=range(0,4))
data2.tip = pd.cut(x=data2.tip,bins=4,labels=range(0,4))data2.head()

4.3 二值化

二值化常用方法是Binarizer类及其类方法transform()。基本原理是设置一个阈值threshold,当记录数据大于该阈值,则标注为1,否则为0。

data3 = tips.copy()import numpy as np
from sklearn.preprocessing import Binarizerarr1 = np.array(data3.total_bill)
data3.total_bill = Binarizer(threshold=20).transform(arr1.reshape(-1, 1))
arr2 = np.array(data3.tip)
data3.tip = Binarizer(threshold=5).transform(arr2.reshape(-1, 1))data3.head()
  • 代码中的threshold参数值是在最小值、最大值之间博主自己取的值!

补充知识

  • reshape(1,-1) 转换成1行
  • reshape(2,-1) 转换成2行
  • reshape(-1,1) 转换成1列
  • reshape(-1,2) 转换成2列

5. 小结

  • “sex”,“smoker”,“day”,"time"四个特征为分类型数据可以通过数字编码进行数值化。

  • “tatal_bill”,"tip"两个特征为连续型数据可以通过等宽法、等频法、二值化等进行离散化。

  • 用户可以结合自己的数据分别利用上述方法转换成自己所需类型的数据集!


  • 写作不易,切勿白剽
  • 博友们的点赞关注就是对博主坚持写作的最大鼓励
  • 持续更新,未完待续…

数据处理之数据类型转换相关推荐

  1. 数据处理之Pandas中数据类型转换

    Pandas中进行数据类型转换有二种基本方法: 使用astype()函数进行强制类型转换 使用Pandas提供的函数如to_numeric().to_datetime() 举例数据 import nu ...

  2. Pandas数据类型自行变换及数据类型转换失败情况分析与解决方法

    最近,在进行数据处理过程中,频繁使用Pandas进行DataFrame关联.合并.数据类型变换操作,当到最后数据入库(MongoDB)时,出现部分整型数据变成浮点型,以及时间转字符串存储时,偶尔出现少 ...

  3. 图像位深度 8位 16位 24位 32位区别对比 RGB 真彩色 基本概念:(大小,深度,通道)位深度数据类型转换原理 Mat数据读取(opencv里的imread)

    位深度 位深度是指在记录数字图像的颜色时,计算机实际上是用每个像素需要的二进制数值位数来表示的.计算机之所以能够显示颜色,是采用了一种称作"位"( bit ) 的记数单位来记录所表 ...

  4. GaussDB数据类型转换介绍

    文章目录 一.数据类型转换场景 二.数据类型转换及示例 1.cast(value AS type) 2.to_date(text) 3.to_date(text,format) 4.to_char(d ...

  5. 数据类型转换pytorch

    du = torch.ones([2,2]) a = np.array([[1,2],[3,4]],dtype=np.float32) b = torch.from_numpy(a)#数据类型是不变的 ...

  6. tf.cast()数据类型转换

    tf.cast()函数的作用是执行 tensorflow 中张量数据类型转换,比如读入的图片如果是int8类型的,一般在要在训练前把图像的数据格式转换为float32. cast定义: cast(x, ...

  7. Java中如何实现Date与String之间的数据类型转换

    String 数据类型转换成 Date String inputDate = "2021-04-11";Date outputDate = null;SimpleDateForma ...

  8. Java 数据类型转换

    学而时习之,温故而知新. 数据类型转换,先放一张图,了解数据类型 简单数据类型之间的转换又可以分为: 1 低级到高级的自动类型转换 2 级到低级的强制类型转换 3 包装类过渡类型转换. (有时候我们有 ...

  9. Java基础语法(一)注释,关键字,常量,变量,数据类型,标识符,数据类型转换...

    从今天开始,记录学习Java的过程.要学习Java首先得有环境,至于环境的安装我就不说了,百度有很多教程,比如:http://jingyan.baidu.com/article/20095761904 ...

最新文章

  1. mysqldump 导入数据库可能遇到错误
  2. 在Windows下使用make命令
  3. 浏览器与服务器通信技术——Ajax详解
  4. python中如何导入图片,Unreal中的python如何导入图片资源到引擎
  5. pytorch学习笔记(三十九):Fine-Tuning
  6. Android qemu pipe高速管道(九)
  7. linux下面桌面的安装
  8. NPDP产品经理认证,到底是何方神圣?
  9. 一文读懂社交网络分析(附应用、前沿、学习资源)
  10. 高通源代码 Ubuntu14.04下载编译Android(1)
  11. 7-inch LCD 调试记录 DM6437
  12. C51单片机引脚名词英文全称
  13. 不支持16位应用程序,%1和64位电脑不兼容问题
  14. std::numeric_limits的使用
  15. 最详细的知识图谱的技术与应用
  16. Work20230406
  17. 函数前置条件和后置条件
  18. uoj #311.【UNR #2】积劳成疾 dp
  19. 温度转换代码(摄氏度华氏度转换)
  20. JS实现最美的3D宇宙效果

热门文章

  1. 《名贤集》《明贤集》四言集
  2. netbackup 备份oracle,Netbackup 6 备份 oracle 9.2
  3. RabbitMQ3:RabbitMQ的使用方法
  4. CSR867x学习笔记:SPP Server and Client
  5. win10安装steam有损计算机,win10系统steam磁盘写入错误怎么办 steam磁盘写入错误的解决教程...
  6. 什么是SpringData
  7. 判断某整数是否既是5又是7的整数倍()
  8. 请问在 1 到 2020 中,有多少个数既是 4 的整数倍,又是 6 的整数倍。
  9. [USACO 2010 Feb S]Chocolate Eating
  10. 处女作,,QT+arduino的物联网小项目