动手学数据分析task02:数据清洗及特征处理

news/2024/6/29 10:45:29

数据清洗

为什么进行数据清洗?

  • 我们拿到的数据通常是不干净的,所谓的不干净,就是数据中有缺失值,有一些异常点等,需要经过一定的处理才能继续做后面的分析或建模,所以拿到数据的第一步是进行数据清洗

缺失值的观察与处理

查看缺失值

方法一:df.info()

在这里插入图片描述

方法二:df.isnull().sum()

在这里插入图片描述

查找缺失值

  • 有none、nan、isnull三种方法,具体效果如图所示
  • 对于数值型:nan和isnull是相同效果;对于非数值型:nan并不起作用,只可以用isnull查找

在这里插入图片描述

dropna()函数

  • axis:axis=0: 删除包含缺失值的行axis=1: 删除包含缺失值的列
  • how: 与axis配合使用 how=‘any’ :只要有缺失值出现,就删除该行或列 how=‘all’: 所有的值都缺失,才删除行或列
  • thresh:axis中至少有thresh个非缺失值,否则删除 比如axis=0,thresh=10:标识如果该行中非缺失值的数量小于10,将删除改行
  • subset: list 在哪些列中查看是否有缺失值
  • inplace: 是否在原数据上操作。如果为真,返回None否则返回新的copy,去掉了缺失值。

fillna()函数

  • value: scalar, dict, Series, or DataFrame
  • dict: 可以指定每一行或列用什么值填充
  • method: {‘backfill’, ‘bfill’, ‘pad’, ‘ffill’, None}
  • default None在列上操作
  • ffill / pad: 使用前一个值来填充缺失值
  • backfill / bfill :使用后一个值来填充缺失值
  • limit 填充的缺失值个数限制

重复值的观察与处理

重复值的观察 df[df.duplicated()]

在这里插入图片描述

重复值的处理 df = df.drop_duplicates()

在这里插入图片描述

  • 在对一些数值型属性进行判空处理后,填充0就可以进行重复值处理

特征处理

对连续型进行离散化处理

  • 首先,使用describe()查看min和max

在这里插入图片描述

  • 对于age属性进行平均划分,5代表分为五份;df[‘AgeBand’]代表新生成一个列;labels代表新属性列的取值

在这里插入图片描述

  • 对于连续取值,不想均匀划分怎么办?
  • 比如按照(0,5] (5,15] (15,30] (30,50] (50,80]五个年龄段,并分别用类别变量12345表示
    在这里插入图片描述
  • 另一种,按比例划分;按10% 30% 50 70% 90%五个年龄段,并用分类变量12345表示

在这里插入图片描述

对文本型变量进行转换

方法一:replace

  • df[‘Sex_num’] = df[‘Sex’].replace([‘male’,‘female’],[1,2])

在这里插入图片描述

方法二:map

  • df['Sex_num'] = df['Sex'].map({'male': 1, 'female': 2})
    在这里插入图片描述

方法三:使用sklearn.preprocessing的LabelEncoder

在这里插入图片描述

使用onehot编码

在这里插入图片描述

利用正则编码提取信息

在这里插入图片描述


http://www.niftyadmin.cn/n/4115472.html

相关文章

Windows 10 部署Enterprise Solution 5.5

Windows 10正式版发布以后,新操作系统带来了许多的变化。现在新购买的电脑安装的系统应该是Windows 10。与当初用户不习惯Windows 7,购买新电脑后第一个想做的事情就是重装成XP,估计现在的Windows 10新用户也有这种冲动(安装Windows 7)。界面…

wordpress博客遇到的那些坑(一)xmlrpc漏洞

2019独角兽企业重金招聘Python工程师标准>>> 十一假期结束之后,发现自己的博客不时出现数据库连接失败,经检查是mysql停止运行了。之前出现过这样的情况,但是没有那么频繁,于是就写了一个检查mysql进程的脚本&#xff…

动手学数据分析task03:数据重构

数据重构 数据连接 数据重构方法一:concat pd.concat([text_left_up,text_right_up],axis1) axis1:按照行连接数据重构方法二:使用DataFrame自带的方法join方法和append 行用join,列用append; 数据重构方法三:使用Panads的mer…

谈线性变换

首先,先明确向量的基和坐标 当然,也可以表示成更简洁的形式 ,其中,现在出现一个线性变换,线性变换一定满足两个条件: ,那么,线性变换能不能用个矩阵来代替呢?大部分情况是…

java文件上传路径缺少\的解决办法

今天做一个文件上传,取路径,然后读取文件的时候,发现存储到MySQL的路径是这样的: 然后,发现,我的java文件显示的是正确的: 但是:放到path里面,存到MySQL里面就缺少分割线…

Ionic start 创建项目报错

ionic 2 创建项目的时候报错如上;本人试了好多方法,npm,cordova,ionic都尝试重装了。但是依旧无效,ionic start 的时候生成ionic1项目时没问题,但升ionic2 的时候有问题。我估计是以为网络问题,…

python telnet 登录

有段时间想利用python自动批量登录设备,并输入命令。但是读取设备列表文件遍历后发现telnetlib库的登录不上设备。其显示错误为socket.gaierror: [Errno 4] non-recoverable name resolution failure明显是DNS解析IP地址错误。把设备名列表文件全部改成IP地址的话能…

动手学数据分析task04:数据可视化

数据可视化 柱状图 泰坦尼克号数据集中男女中生存人数分布情况 泰坦尼克号数据集中男女中生存人与死亡人数的比例图 1.stack: 将数据的列索引转换为行索引(列索引可以简单理解为列名) 2.unstack:将数据的行索引转换为列索引 若去掉unstack() 堆积柱…