数据预处理|数据清洗|使用Pandas进行异常值清洗

数据预处理|数据清洗|使用Pandas进行异常值清洗

  • 使用Pandas进行异常值清洗
    • 1. 异常值检测
      • 1.1 简单统计分析
      • 1.2 散点图方法
      • 1.3 3σ原则
      • 1.4 箱线图
    • 2. 异常值处理
      • 2.1 直接删除
      • 2.2 视为缺失值
      • 2.3 平均值修正
      • 2.4 盖帽法
      • 2.5 分箱平滑法
      • 2.6 回归插补
      • 2.7 多重插补
      • 2.8 不处理

使用Pandas进行异常值清洗

异常值是指那些在数据集中存在的不合理的值,这里所说不合理的值是偏离正常范围的值,不是错误值。异常值的存在会严重干扰数据分析的结果。

1. 异常值检测

1.1 简单统计分析

最常用的统计量是最大值和最小值,用来判断这个变量的取值是否超出合理的范围。如电商信息表中客户年龄age=199,则该变量的取值存在异常。

  • 例1. 计算成年人的身高、体重公式为:Y=(X-100)×1.2,其中X为身高(cm),Y为标准体重(kg)。
import matplotlib.pyplot as plt
import numpy as np
#假设成年人(18岁以上)正常高度在1.4米至2.0米
x=np.arange(140,200,5) 
y=(x-100)*1.2
plt.rcParams['font.family']='STSong' #图形中显示汉字
plt.rcParams['font.size']=10
plt.title('身高和体重')
plt.plot(x,y,'.')
plt.plot(150,187,'r.') #异常值
plt.plot(166,212,'r.') #异常值
plt.plot(187,208,'r.')
plt.show()

在这里插入图片描述

1.2 散点图方法

通过数据分布的散点图可以检测异常数据。

  • 例2. 分析房屋面积和房屋价格的关系示例。
import matplotlib.pyplot as plt
import numpy as np
x = [225.98,247.07,253.14,254.85,241.58,
     301.01,20.67,288.64, 163.56,120.06,
     207.83,342.75,147.9,53.06,224.72,
     29.51,21.61,483.21, 245.25,
     299.25,343.35] #房屋面积数据
y = [196.63,203.88,210.75,372.74,202.41,
     347.61,24.9,239.34, 140.32,304.15,
     176.84,488.23,128.79,49.64,191.74,
     33.1,30.74,400.02,205.35,330.64,
     283.45] #房屋价格数据
plt.figure(figsize=(6, 5), dpi=100) #创建画布
plt.scatter(x, y,s=40) # 绘制散点图
plt.show()  # 显示图像

在这里插入图片描述

1.3 3σ原则

在正态分布中, σ \sigma σ代表标准差, μ \mu μ代表均值, x = μ x=\mu x=μ即为图像的对称轴。
3 σ 3\sigma 3σ原则认为:数值分布在 ( μ − σ , μ + σ ) (\mu - \sigma , \mu + \sigma ) (μσ,μ+σ)中的概率为0.6827;数值分布在 ( μ − 2 σ , μ + 2 σ ) (\mu - 2\sigma , \mu + 2\sigma ) (μ2σ,μ+2σ)中的概率为0.9544;数值分布在 ( μ − 3 σ , μ + 3 σ ) (\mu - 3\sigma , \mu + 3\sigma ) (μ3σ,μ+3σ)中的概率为0.9974。也就是说,Y 的取值几乎全部集中在 ( μ − 3 σ , μ + 3 σ ) (\mu - 3\sigma , \mu + 3\sigma ) (μ3σ,μ+3σ)区间内,超出这个范围的可能性仅占不到0.3%,属于极个别的小概率事件,因此将超出 ( μ − 3 σ , μ + 3 σ ) (\mu - 3\sigma , \mu + 3\sigma ) (μ3σ,μ+3σ)范围的值都可以认为是异常值,如下图所示。
在这里插入图片描述

3σ原则要求数据服从正态或近似正态分布,且样本数量大于10。

  • 例3. 3σ原则检测异常值示例。
import pandas as pd
data=[199,78,72,70,68,72,77,78,42,78,74,
      54,80,82,65,62,60] #学生某门课程成绩
s=pd.Series(data) 
dmean=s.mean()
dstd=s.std()
print('\n检测出异常值:')
yz1=dmean-3*dstd
yz2=dmean+3*dstd
for i in range(0,len(data)):
    if (data[i]<yz1)or(data[i]>yz2):
        print(data[i],end=',')
检测出异常值:
199,

1.4 箱线图

箱线图是通过数据集的四分位数形成的图形化描述,是非常简单而且有效的可视化异常值的一种检测方法。

  • 例4. 箱线图检测异常值示例。
import pandas as pd
import matplotlib.pyplot as plt
data=[78,72,32,70,68,72,77,78,
      56,78,74,54,80,82,65,62] 
s=pd.Series(data) 
plt.boxplot(x=s.values,whis=1.5)
plt.show()
#从图中可以看出,检测出的异常值为32。

在这里插入图片描述

2. 异常值处理

异常值处理是数据预处理中的一个重要步骤,它是保证原始数据可靠性,平均值与标准差计算准确性的前提。

2.1 直接删除

直接将含有异常值的记录删除。这种方法简单易行,但缺点也不容忽视,一是在观测值很少的情况下,这种删除操作会造成样本量不足;二是直接删除、可能会对变量的原有分布造成影响,从而导致统计模型的不稳定。

2.2 视为缺失值

利用处理缺失值的方法来处理。这一方法的好处是能够利用现有变量的信息,来填补异常值。需要注意的是,将该异常值作为缺失值处理,需要根据该异常值的特点来进行,此时需要考虑该异常值(缺失值)是完全随机缺失、随机缺失还是非随机缺失的不同情况进行不同处理。

2.3 平均值修正

如果数据的样本量很小的话,也可用前后两个观测值的平均值来修正该异常值。这其实是一种比较折中的方法,大部分的参数方法是针对均值来建模的,用平均值来修正,优点是能克服丢失样本的缺陷,缺点是丢失了样本“特色”。

2.4 盖帽法

将某连续变量均值上下三倍标准差范围外的记录替换为均值上下三倍标准差值,即盖帽处理。如下图所示。
在这里插入图片描述

2.5 分箱平滑法

分箱平滑法是指通过考察“邻居”(周围的值)来平滑存储数据的值。分箱的主要目的是消除异常值,将连续数据离散化,增加粒度。

  • 分箱
    在分箱前,一定要先排序数据,再将它们分配到等深(等宽)的箱子中。
    等深分箱:按记录数进行分箱,每箱具有相同的记录数,每箱的记录数称为箱子的权重,也称箱子的深度。
    等宽分箱:在整个属性值的区间上平均分布,即每个箱的区间范围设定为一个常量,称为箱子的宽度。
    例如客户收入属性income排序后的值(人民币:元):2300,2500, 2800,3000,3500,4000,4500,4800,5000,5300,5500,6000,6200,6700,7000,7200,分箱的结果如下:
    等深分箱。如深度为4,分箱结果为:
    箱1:2300,2500,2800,3000;
    箱2:3500,4000,4500,4800;
    箱3: 5000,5300,5500,6000;
    箱4:6200,6700,7000,7200。
    等宽分箱。如宽度为1200元人民币,分箱结果为:
    箱1:2300,2500,2800,3000,3500;
    箱2:4000,4500,4800,5000;
    箱3:5300,5500,6000,6200;
    箱4: 6700,7000,7800。
  • 数据平滑
    将数据划分到不同的箱子之后,可以运用如下三种策略对每个箱子中的数据进行平滑处理。
    平均值平滑:箱中的每一个值被箱中数值的平均值替换。
    中值平滑:箱中的每一个值被箱中数值的中值替换。
    边界平滑:箱中的最大值和最小值称为箱子的边界,箱中的每一个值被最近的边界值替换。

2.6 回归插补

对于两个相关变量之间的变化模式,通过回归插补适合一个函数来平滑数据。若是变量之间存在依赖关系,也就是 y = f ( x ) y=f(x) y=f(x),那么就可以设法求出依赖关系 f f f,再根据 x x x来预测 y y y,这也是回归问题的实质。实际问题中更为常见的假设是 p ( y ) = N ( f ( x ) ) p(y)=N(f(x)) p(y)=N(f(x)) N N N为正态分布。假设 y y y是观测值并且存在异常值,求出的 x x x y y y之间的依赖关系,再根据 x x x来更新 y y y的值,这样就能去除其中的异常值,这也是回归消除异常值的原理 。

2.7 多重插补

多重插补的处理有两个要点:先删除y变量的缺失值然后插补。需要注意以下两个方面,一是被解释变量有缺失值时不能填补,只能删除;二是只对放入模型的解释变量进行插补。

2.8 不处理

根据该异常值的性质特点,使用更加稳健模型来修饰,然后直接在该数据集上进行数据挖掘。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/460683.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《Ubuntu20.04环境下的ROS进阶学习5》

一、Hector_Mapping构建二维地图 在前面我们已经介绍了如何使用激光雷达来扫描地图&#xff0c;如何用激光雷达来建造地图&#xff0c;本节我们将两者结合起来&#xff0c;通过Hector_Mapping功能包实现SLAM。 二、在仿真环境中进行2D SLAM 1、下载Hector_Mapping sudo apt i…

软考高级:数据库、数据仓库和数据湖概念和例题

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;大厂高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

丈夫竞被妻子打的不敢回家

妻子对丈夫大打出手&#xff0c;公主岭法院发出首份男性人身安全保护令 近日&#xff0c;公主岭市人民法院公主岭人民法庭作出了一项具有历史意义的裁定&#xff0c;首次为一位男性受害者发出了人身安全保护令。 据悉&#xff0c;受害者张某与妻子李某结婚多年&#xff0c;但婚…

组合逻辑电路(四)

目录 采用MSI的组合逻辑电路的分析与设计 采用MSI的组合逻辑电路的设计 用具有n个地址输入端的中规模集成器件实现n变量逻辑函数 用译码器设计组合逻辑电路 例 用数据选择器设计组合逻辑电路 例 用具有n个地址输入端的数据选择器实现m变量逻辑函数&#xff08;m>n&#…

工具类实现导出复杂excel、word

1、加入准备的工具类 package com.ly.cloud.utils.exportUtil;import java.util.Map;public interface TemplateRenderer {Writable render(Map<String, Object> dataSource) throws Throwable;}package com.ly.cloud.utils.exportUtil;import java.util.Map;public int…

LabVIEW多表位数字温湿度计图像识别系统

LabVIEW多表位数字温湿度计图像识别系统 解决数字温湿度计校准过程中存在的大量需求和长时间校准问题&#xff0c;通过LabVIEW开发平台设计了一套适用于20多个表位的数字温度计图像识别系统。该系统能够通过图像采集、提取和处理&#xff0c;进行字符训练&#xff0c;从而实现…

树形结构 一篇文章梳理

树形结构是一种非常重要的非线性数据结构&#xff0c;它模拟了具有层次关系的数据模型。在树形结构中&#xff0c; 目录 一、组成元素&#xff1a; 二、树的属性&#xff1a; 深度或高度 度 路径 路径长度 三、树的类型 1 二叉树 2 多叉树 3 完全二叉树 4 满二叉树…

五十三佛_记录

个人笔记&#xff0c;斟酌阅读 《佛说观药王药上二菩萨经》云&#xff1a;若有善男子善女人及馀一切众生。得闻是五十三佛名者。是人於百千万亿阿僧祇劫不堕恶道。   若复有人能称是五十三佛名者。生生之处常得值遇十方诸佛。   若复有人能至心敬礼五十三佛者。除灭四重五…

C---流

最大流 最大流即为最大可行流&#xff0c;最大流的流量是所有可行流中最大的。 实现最大流算法&#xff0c;通常可以使用Ford-Fulkerson算法或它的改进版本Edmonds-Karp算法。这些算法基于图论中的网络流理论&#xff0c;用于在带权有向图中找到从一个顶点到另一个顶点的最大…

html5播放flv视频

参考&#xff1a;flv-h265 - npmHTML5 FLV Player. Latest version: 1.7.0, last published: 6 months ago. Start using flv-h265 in your project by running npm i flv-h265. There are no other projects in the npm registry using flv-h265.https://www.npmjs.com/packag…

基于springboot+mybatis调用MySQL存储过程

前言&#xff1a; 很多公司一般不使用JAVA写存储过程&#xff0c;因为写法较为复杂&#xff0c;不方便后期维护。 不排除一些公司项目会使用。 如果索引优化已经达到很好的性能&#xff0c;不建议使用。以下示例供学习参考&#xff1a; demo源码&#xff1a;https://gitee.com…

JDBC 笔记

课程地址 JDBC Java Database Contectivity 同一套 java 代码操作不同的关系型数据库 入门程序 创建工程&#xff0c;导入 jar 包。工程目录结构&#xff1a; public class JDBCDemo {public static void main(String[] args) throws Exception {// 注册驱动Class.forName(…

新品牌推广怎么做?百度百科创建是第一站

创业企业的宣传推广怎么做&#xff1f;对于初创的企业、或者品牌来说&#xff0c;推广方式都有一个循序渐进的过程&#xff0c;但多数领导者都会做出同一选择&#xff0c;第一步就是给自己的企业创建一个百度百科词条。在百度百科建立自己的企业、或产品词条,不仅可以树立相关信…

Windows11去掉 右键菜单的 AMD Software:Adrenalin Edition 选项

Windows11去掉 右键菜单的 AMD Software:Adrenalin Edition 选项 运行regedit打开注册表编辑器 先定位到 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\PackagedCom\Package 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\PackagedCom\Package找到 AdvancedMicroDevicesInc-2.…

【NR 定位】3GPP NR Positioning 5G定位标准解读(十六)-UL-AoA 定位

前言 3GPP NR Positioning 5G定位标准&#xff1a;3GPP TS 38.305 V18 3GPP 标准网址&#xff1a;Directory Listing /ftp/ 【NR 定位】3GPP NR Positioning 5G定位标准解读&#xff08;一&#xff09;-CSDN博客 【NR 定位】3GPP NR Positioning 5G定位标准解读&#xff08;…

Unity类银河恶魔城学习记录10-10 p98 UI health bar源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili HealthBar_UI.cs using System.Collections; using System.Collections.G…

Unity PS5开发 天坑篇 之 申请开发者与硬件部署01

腾了好几天终于把PS5开发机调试部署成功, 希望能帮到国内的开发者, 主机游戏PlayStation/Nintendo Switch都是比较闭塞的&#xff0c;开发者账号是必须的。 开发环境有两个部分&#xff0c;一是DEV Kit 开发机, TEST Kit测试机两部分组成&#xff0c;二是Unity的支持库(安装后…

采用MQTT协议实现Android APP与阿里云平台的连接

前言 相信APP&#xff0b;单片机是很多同学毕设或者课设的模式&#xff0c;上学期做课设的时候用到了MQTT协议连接阿里云平台实现数据的通信&#xff0c;也是根据网上大佬的经验做的&#xff0c;中间也踩了很多坑。本文将介绍Android APP 通过MQTT协议与阿里云云平台连接的内容…

【矩阵】73. 矩阵置零【中等】

矩阵置零 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,1,1],[1,0,1],[1,1,1]] 输出&#xff1a;[[1,0,1],[0,0,0],[1,0,1]] 解题思路 1、…

java数据结构与算法刷题-----LeetCode51. N 皇后

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 文章目录 解题思路&#xff1a;时间复杂度O( N ! N! N!)&#xff0c;空间复…