数据清洗第3篇章 - 数据异常处理

news2024/12/26 0:19:18

数据清洗是数据分析过程中至关重要的一步,它确保数据的准确性、一致性和完整性。这不仅有助于提高分析结果的可靠性和有效性,还能为算法建模决策提供高质量的数据基础。在进行数据分析和建模的过程中,大量的时间花在数据准备上:加载、清理、转换和重新排列,这样的工作占用了工程师 80% 以上的时间。所以掌握常用的数据清洗方法,将帮助我们能更高效、更高质量完成数据清洗工作。

我们将从易到难来讲述数据清洗系列三篇章,本文为第三篇章:数据异常处理,包括基础常量法、标准差法、四分位距法、Isolation Forest 机器学习方法,我们将理论和实践结合,层层递进一步一步掌握缺数据异常的识别、处理方法。

第一篇章:处理缺失值和重复值

第二篇章:数据转换处理

1、基础常量法

如果我们已经很清晰筛选异常数据的规则,例如大于什么值或者小于什么值时,数据则是为异常的数据,那么我们可以直接按规则筛选出异常数据。如下所示,我们定义大于 60 的数据则为异常数据

import pandas as pd
data = pd.Series([50, 49, 51, 50, 49, 51, 50, 49, 51, 50, 49, 51, 100])
# 检测异常值
outliers = data[data > 60]
outliers

# ----输出----
12    100
dtype: int64

2、标准差法

标准差法是一种常用的识别异常值的方法,它基于数据的均值和标准差来判断哪些数据点偏离正常范围。需要注意的是:

  • 适用性:标准差法假设数据是正态分布的,对于偏态分布的数据可能不适用。

  • 选择阈值:根据具体情况选择合适的倍数(2或3倍标准差),以避免误判正常数据为异常值。

import pandas as pd
data = pd.Series([50, 49, 51, 50, 49, 51, 50, 49, 51, 50, 49, 51, 100])
# 计算均值和标准差
mean = data.mean()
std_dev = data.std()
# 设置阈值(通常是2或3倍标准差)
threshold = 3
# 检测异常值
outliers = data[(data - mean).abs() > threshold * std_dev]
outliers

# --输出--
12    100
dtype: int64
3、四分位距法

四分位距法是一种基于统计学的异常值识别方法,适用于数据分布不对称的情况。它通过计算数据的四分位数来识别异常值。需要注意的是:

  • 鲁棒性:四分位距法对极值不敏感,因此适用于非正态分布的数据。

  • 调节系数:1.5是常用的系数,可以根据具体需求调整以提高识别的灵敏度。

import pandas as pd

data = pd.Series([50, 48, 51, 50, 49, 51, 50, 49, 51, 50, 49, 51, 100])

# 计算四分位数
Q1 = data.quantile(0.25)
Q3 = data.quantile(0.75)
IQR = Q3 - Q1

# 设置上下限
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR

# 检测异常值
outliers = data[(data < lower_bound) | (data > upper_bound)]
outliers

# ----输出----
12    100
dtype: int64
4、Isolation Forest

Isolation Forest 是一种基于树结构的异常值检测方法,特别适合处理高维数据集。它通过随机选择特征和分割值来构建多棵树,从而隔离数据点。异常值通常更容易被隔离,因为它们需要更少的分割。需要注意的是:

  • 参数调整:contamination 参数表示数据集中异常值的比例,需要根据具体情况调整。

  • 随机性:Isolation Forest 是一种随机算法,设置随机种子(random_state)可以确保结果可重复。

  • 适用场景:适合大规模、高维数据集的异常检测。

from sklearn.ensemble import IsolationForest

data = pd.Series([50, 49, 51, 50, 49, 51, 50, 49, 51, 50, 49, 51, 100])
# 转换数据为二维数组
data_reshaped = data.values.reshape(-1, 1)
# 初始化IsolationForest,contamination:数据集中异常点的比例,用于确定阈值
iso_forest = IsolationForest(contamination=0.1, random_state=42)

# 训练模型
iso_forest.fit(data_reshaped)

# 预测异常值, 结果: -1 表示异常,1 表示正常
outliers = iso_forest.predict(data_reshaped)
data[outliers == -1]

# ----输出----
12    100
dtype: int64

本文,我们详细介绍了在数据清洗中我们可以如何进行数据异常处理包括基础常量法、标准差法、四分位距法、Isolation Forest 机器学习方法,希望对阅读本文的读者有一定的学习提升和借鉴启发,不足之处也欢迎留言指出。

如果你喜欢本文,欢迎点赞,并且关注我们的微信公众号:Python数据挖掘分析,我们会持续更新数据挖掘分析领域的好文章,让大家在数据挖掘分析领域持续精进提升,成为更好的自己!

图片

添加本人微信(coder_0101),或者通过扫描下面二维码添加二维码,拉你进入行业技术交流群,进行技术交流~

图片

 

扫描以下二维码,加入 Python数据挖掘分析 群,在群内与众多业界大牛互动,了解行业发展前沿~

图片

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WebRTC Connection Negotiate解决

最近有个项目 &#xff0c;部署之后一直显示&#xff0c;查了一些资料还是没有解决&#xff0c;无奈只有自己研究解决&#xff1f; 什么是内网穿透&#xff1f; 我们访问我们自己的官网产品页面&#xff0c;我们的服务器是一个单独的个体&#xff0c;有独立的公网ip&#xf…

【Canvas与徽章】金圈蓝底国庆75周年徽章

【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>金边黑盾75周年</title><style type"text/css"&g…

关于深度学习torch的环境配置问题

已经下好了torch在虚拟环境中&#xff0c;结果在ipynb文件中无法运行 后来在终端直接用python语句编译 发现没有问题 在编辑测试py文件 发现runcode有问题 原来是插件默认base环境 具体操作参考VS Code插件Code Runner使用python虚拟环境_coderunner怎么在虚拟环境中使用-CSD…

“2024光明多多垂直农业挑战赛”决赛启动成功举办

由光明食品集团所属上花集团的光明花博邨基地&#xff0c;与拼多多携手&#xff0c;联合中国农业大学、浙江大学等共同举办的“2024光明多多垂直农业挑战赛暨第四届多多农研科技大赛”于9月20-21日正式启动决赛。来自上海交大、中国农大、上海农科院、国家农业智能装备工程技术…

资源《Arduino 扩展板4-单游戏摇杆》说明。

资源链接&#xff1a; Arduino 扩展板4-单游戏摇杆 1.文件明细&#xff1a; 2.文件内容说明 包含&#xff1a;AD工程、原理图、PCB。 3.内容展示 4.简述 该文件为PCB工程&#xff0c;采用AD做的。 该文件打板后配合Arduino使用&#xff0c;属于Arduino的扩展板。 该文件…

STM32 GPIO - 笔记

输出: - 推挽 - 输出高低电平都由芯片决定 - 开漏 - 输出低电平有芯片输出,输出高电平由外部电路决定 输入: - 浮空 - 输入电平不确定 - 上拉 - 输入电平拉高 - 下拉 - 输入电平拉低

【网路通信基础与实践番外二】TCP协议的流量控制和拥塞控制以及二者区别和例题

TCP协议是端对端的协议&#xff0c;因此在数据进行传输的过程受发送方&#xff0c;数据通道&#xff0c;接收方三方状态的影响。我们用水龙头来比喻数据发送方&#xff0c;水管来比喻数据通道&#xff0c;水桶来表示数据接收方。 图(a)表示水桶太小&#xff0c;来不及接受注入…

SpringBoot使用@Slf4j注解实现日志输出

Slf4j 是 Lombok 库中的一个注解&#xff0c;它极大地简化了日志记录的代码。通过使用这个注解&#xff0c;Lombok 会自动在你的类中注入一个静态的日志对象。通过在类上添加 Slf4j 注解后&#xff0c;可以直接在方法中使用 log.info() 等方法进行日志打印。 1、安装相关依赖 …

基于RBAC的通用权限管理系统的详细分析与实现(理念篇——权限对象、权限项、功能权限、数据权限、权限组、权限设计)

一、权限&#xff08;Permission&#xff09; 在与人沟通的过程中&#xff0c;我们很多次提到了权限&#xff0c;但是权限具体的含义每个人理解的含义都不明确&#xff0c;这样很容易造成双方信息不对称&#xff0c;有的人就只是把权限理解成某个页面的是否可访问&#xff0c;…

超级干货:Air780EP AT开发之FTP应用

是时候讲一讲Air780EP模组FTP应用的多个AT命令示例&#xff0c;因为很多小伙伴已经提出要求了。 Air780EP是低功耗4G模组之一&#xff0c;支持全系列的AT指令以及LuatOS脚本二次开发。 一、准备工作 1.1 硬件准备 合宙EVB_Air780EP开发板一套&#xff0c;包括天线、SIM卡&am…

TXT文本文档内容整理归档,一键批量操作管理避免出错

在当今的信息化时代&#xff0c;文档管理成为了企业日常运营中不可或缺的一部分。其内容的合并管理更是显得尤为重要。避免在合并过程中出现格式混乱或内容丢失的情况&#xff0c;本文将探讨如何实现TXT文档内容的合并管理。 1.运行软件切换到“文本批量操作”功能版块上 2.在…

基于单片机汽车尾灯控制系统

**单片机设计介绍&#xff0c;基于单片机汽车尾灯控制系统设计 文章目录 前言概要设计思路 软件设计效果图 程序文章目录 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师&#xff0c;一名热衷于单片机技术探索与分享的博主、…

超轻巧modbus调试助手使用说明

一、使用说明 1.1 数据格式 和其他的modbus采集工具一样&#xff0c;本组件也支持各种数据格式&#xff0c;其实就是高字节低字节的顺序。一般是2字节表示一个数据&#xff0c;后面又有4字节表示一个数据&#xff0c;目前好像还有8字节表示一个数据的设备。不同厂家的设备对应…

[Linux]Shell基本

入门 变量 运算符 语句 循环 控制台输入 函数

薄膜凸起和开裂是同一种应力导致的吗?

知识星球里的学员问&#xff1a;我们产线上薄膜出了质量问题&#xff0c;都一概归结为应力过大。麻烦讲讲应力的种类&#xff0c;以及不同种类的应力会造成哪些薄膜问题&#xff1f; 内应力的种类&#xff1f; 内应力的分类很多&#xff0c;如果我们按作用的效果来分&#xff…

(IDEA)spring项目导入本地jar包方法和项目打包时找不到引入本地jar包的问题解决方案

系列文章目录 文章目录 系列文章目录一、&#xff08;IDEA&#xff09;spring项目导入本地jar包方法和项目打包时找不到引入本地jar包的问题解决方案1.资料 一、&#xff08;IDEA&#xff09;spring项目导入本地jar包方法和项目打包时找不到引入本地jar包的问题解决方案 1.资料…

【51单片机】点亮LED之经典流水灯

开发环境 开发板&#xff1a;普中51-单核-A2单片机&#xff1a;STC89C52RC&#xff08;双列直插40引脚 DIP40&#xff09;Keil uVision5 v9.61 最新版破解方法自行百度&#xff0c;相关文档和视频资料很多&#xff0c;我自己将这一操作记录下来当做博客发布&#xff0c;CSDN以…

C++系列-继承补充

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 继承和友元 友元关系不能继承&#xff0c;父亲的朋友不能是你的朋友 比如在这个例子当中&#xff1a; class Student; class Person { public:friend void Display(const Per…

主流HR软件对比,五大系统功能与成本一览

五款主流HR系统包括ZohoPeople、金蝶人力云、用友人力云、红海eHR和SAPSuccessFactors&#xff0c;各具特色。ZohoPeople功能丰富&#xff0c;金蝶人力云云端部署&#xff0c;用友人力云多模块集成&#xff0c;红海eHR定制化服务&#xff0c;SAPSuccessFactors全球化视野。企业…

docker pull 超时Timeout失败的解决办法

当国内开发者docker pull遇到如下提示时&#xff0c;不要惊讶 [rootvm /]# docker pull postgres Using default tag: latest Error response from daemon: Get "https://registry-1.docker.io/v2/": dial tcp 128.121.146.235:443: i/o timeout [rootvm /]# 自2024…