【python】数据挖掘分析清洗——离群点(异常值)处理方法汇总

这篇具有很好参考价值的文章主要介绍了【python】数据挖掘分析清洗——离群点(异常值)处理方法汇总。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


本文链接:https://blog.csdn.net/weixin_47058355/article/details/129949060?spm=1001.2014.3001.5501

前言

异常值处理的意义在于提高数据分析的准确性和可靠性。异常值往往会影响数据的统计特征,如平均值、方差等,从而导致错误的结论或预测结果。此外,异常值还可能干扰模型的拟合效果,使得模型对数据的解释能力变弱。
因此,对于数据分析任务,我们通常需要进行异常值处理,以尽可能保证数据的质量和准确性。常用的异常值处理方法包括删除异常值、替换异常值、将异常值视为缺失值等。具体方法需要根据数据类型和任务要求来选择和实施。
本文用的是泰塔尼克号的数据集 可以从kaggle上找 链接:传送门

一、识别异常值

1.1 箱线图处理异常值

箱线图(Box plot)是一种用于展示数据分布情况的图形,它能够有效地检测数据中的异常值。箱线图由五个数值点组成,分别是最小值、下四分位数(Q1)、中位数(Q2)、上四分位数(Q3)和最大值。
在箱线图中,箱子的上边缘和下边缘分别代表数据的上四分位数(Q3)和下四分位数(Q1),箱子内部的线段表示数据的中位数(Q2)。箱子的顶端和底端则连接着两条线段,称为“须”,它们通常延伸到数据集中非异常值的最大值和最小值。
如果数据中存在异常值,那么这些异常值将会被绘制成独立的点,并且远离其他数据点。通过观察箱线图,我们可以很容易地识别出这些异常值,因为它们不符合正常数据点的分布规律,即在“须”之外。这是箱线图检测异常值的原理。
IQR(Interquartile Range)是指四分位数间距,也就是数据的上四分位数(Q3)与下四分位数(Q1)之间的距离。在使用箱线图进行异常值检测时,通常会根据IQR来确定异常值的阈值范围。

具体来说,可以使用以下公式来计算异常值的阈值:

上限:Q3 + 1.5 * IQR 下限:Q1 - 1.5 * IQR 如果某个数据点小于下限或大于上限,则该数据点被认为是异常值。

例如,假设有一组数据如下:[2, 4, 6, 8, 10, 12, 14, 16, 18, 20,
22]。通过计算可得到Q1=5、Q2=11、Q3=17,因此IQR=12(即17-5)。根据上述公式,可得到下限为-11和上限为33。因此,该数据集中小于-11或大于33的数值均被视为异常值。

通过使用IQR来检测异常值,我们能够更加准确地识别出数据中的离群值,避免了过度依赖具体分布形态的风险。

#封装好的函数 可以随意调用
def outliers_proc(data, col_name, scale=1.5):
    """
            data:接收pandas数据格式
            col_name: pandas列名
            scale: 尺度
    """
    data_col = data[col_name]
    Q1 = data_col.quantile(0.25) # 0.25分位数
    Q3 = data_col.quantile(0.75)  # 0,75分位数
    IQR = Q3 - Q1
    data_col[data_col < Q1 - (scale * IQR)] = Q1 - (scale * IQR)
    data_col[data_col > Q3 + (scale * IQR)] = Q3 + (scale * IQR)
    return data[col_name]
data['Fare'] = outliers_proc(data, 'Fare')
print(data['Fare'].max())
data['Fare']

【python】数据挖掘分析清洗——离群点(异常值)处理方法汇总
【python】数据挖掘分析清洗——离群点(异常值)处理方法汇总

除此之外还可以对数据进行箱线图可视化

import matplotlib.pyplot as plt
import numpy as np

# 绘制箱线图
fig, ax = plt.subplots()
ax.boxplot(data['Fare'])

# 添加标题和标签
ax.set_title('Box Plot')
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')

# 显示图形
plt.show()

【python】数据挖掘分析清洗——离群点(异常值)处理方法汇总

1.2 3α原则

正态分布的3α原则是指,对于一个正态分布的随机变量,其大约有68%的观测值落在平均值加减标准差之间,约95%的观测值落在平均值加减两倍标准差之间,约99.7%的观测值落在平均值加减三倍标准差之间。这个规律可以用来判断某个数据点是否异常或者离群。如果一个数据点的值超过了平均值加减三倍标准差的范围,那么它就被认为是异常点或者离群点。

def find_anomalies(random_data):
    random_data_std = random_data.std()
    random_data_mean = random_data.mean()
    anomaly_cut_off = random_data_std * 3

    lower_limit  = random_data_mean - anomaly_cut_off 
    upper_limit = random_data_mean + anomaly_cut_off

    random_data[random_data <lower_limit] = lower_limit
    random_data[random_data >upper_limit] = upper_limit

    return random_data
find_anomalies(data['Fare'])
print(data['Fare'].max())
data['Fare']

【python】数据挖掘分析清洗——离群点(异常值)处理方法汇总

1.3 boxcox

box和cox在1964年提出的变换可以使线性回归模型满足线性性、独立性、齐方差性以及正态性,同时又不丢失信息。真实数据往往不完美符合这四个特性,而大多数数据统计都要求数据为正态分布(比如pearson相关系数)。因此可以通过boxcox改变一下数据形式。
切记要求该列数据全部大于0 不可以小于或者等于0 否则会报错 Data must be positive.
【python】数据挖掘分析清洗——离群点(异常值)处理方法汇总

from scipy.stats import boxcox
data['Fare']=data['Fare']+1
boxcox_transformed_data = boxcox(data['Fare'])
boxcox_transformed_data

【python】数据挖掘分析清洗——离群点(异常值)处理方法汇总

二、异常值处理

2.1 截尾法

截尾法 就是大于异常值阈值的数 都变为最大阈值 小于异常值阈值的数 都变为最小阈值。比如前面所写的箱线图 就是截尾法

2.2 单一变量代替

凡是在异常值阈值外的,都用单一变量代替,比如最大值,最小值,平均值,众数等等。

2.3 用缺失值代替

凡是在异常值阈值外的,都用缺失值代替,然后用缺失值的填补方法对这些缺失值进行填补。

总结

识别方法和处理方法可以自由组合,比如用箱线图对异常值进行检测,并用缺失值代替,对超出阈值的值进行代替,然后对缺失值填补。这篇文章对你们有用的话,可以点赞收藏加评论哦。欢迎评论区交流。文章来源地址https://www.toymoban.com/news/detail-480714.html

到了这里,关于【python】数据挖掘分析清洗——离群点(异常值)处理方法汇总的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据清洗:数据挖掘的前期准备工作

    ⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ 🐴作者: 秋无之地 🐴简介:CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作,主要擅长领域有:爬虫、后端、大数据开发、数据分析等。 🐴欢迎小伙伴们 点赞👍🏻、收藏

    2024年02月07日
    浏览(47)
  • 数据挖掘 | 实验一 数据的清洗与预处理

    1)了解数据质量问题、掌握常用解决方法; 2)熟练掌握数据预处理方法,并使用Python语言实现; PC机 + Python3.7环境(pycharm、anaconda或其它都可以) 清洗与预处理的必要性 在实际数据挖掘过程中,我们拿到的初始数据,往往存在缺失值、重复值、异常值或者错误值,通常这

    2023年04月08日
    浏览(44)
  • 数据中台系统是一个重要的数字化转型方式之一,它基于现代的大数据处理技术,通过构建统一的数据仓库,将不同来源、格式的数据进行整合、清洗、融合,并提供给业务人员进行分析挖掘的数据集合

    作者:禅与计算机程序设计艺术 数据中台系统是一个重要的数字化转型方式之一,它基于现代的大数据处理技术,通过构建统一的数据仓库,将不同来源、格式的数据进行整合、清洗、融合,并提供给业务人员进行分析挖掘的数据集合。其目标就是为了实现数字化进程中的各

    2024年02月11日
    浏览(44)
  • 【数据挖掘】数据清洗、数据集成、数据标准化的详解(超详细 附源码)

    需要完整代码和PPT请点赞关注收藏后评论区留言私信~~~ 低质量的数据导致低质量的数据挖掘结果 数据是数据挖掘的目标对象和原始资源,对数据挖掘最终结果起着决定性的作用。现实世界中的数据是多种多样的,具有不同的特征,这就要求数据的存储采用合适的数据类型,

    2024年04月12日
    浏览(39)
  • 为何开展数据清洗、特征工程和数据可视化、数据挖掘与建模?

    1.2为何开展数据清洗、特征工程和数据可视化、数据挖掘与建模 视频为 《Python数据科学应用从入门到精通》张甜 杨维忠 清华大学出版社一书的随书赠送视频讲解1.2节内容 。本书已正式出版上市,当当、京东、淘宝等平台热销中,搜索书名即可。内容涵盖数据科学应用的全

    2024年02月04日
    浏览(52)
  • 数据挖掘-实战记录(一)糖尿病python数据挖掘及其分析

    一、准备数据 1.查看数据 二、数据探索性分析 1.数据描述型分析 2.各特征值与结果的关系 a)研究各个特征值本身类别 b)研究怀孕次数特征值与结果的关系 c)其他特征值 3.研究各特征互相的关系 三、数据预处理 1.去掉唯一属性 2.处理缺失值 a)标记缺失值 b)删除缺失值行数  c

    2024年02月11日
    浏览(49)
  • 【数据挖掘】使用 Python 分析公共数据【01/10】

            本文讨论了如何使用 Python 使用 Pandas 库分析官方 COVID-19 病例数据。您将看到如何从实际数据集中收集见解,发现乍一看可能不那么明显的信息。特别是,本文中提供的示例说明了如何获取有关疾病在不同国家/地区传播速度的信息。         要继续操作,您需

    2024年02月12日
    浏览(46)
  • Python数据分析与数据挖掘:解析数据的力量

    随着大数据时代的到来,数据分析和数据挖掘已经成为许多行业中不可或缺的一部分。在这个信息爆炸的时代,如何从大量的数据中提取有价值的信息,成为了企业和个人追求的目标。而Python作为一种强大的编程语言,提供了丰富的库和工具,使得数据分析和数据挖掘变得更

    2024年02月11日
    浏览(58)
  • Python数据分析-数据挖掘(准备数据——数据建模——模型评估——模型应用)

    20 理解业务和数据:我们需要做好什么计划?_哔哩哔哩_bilibili 目录   一、理解业务和数据:我们需要做好什么计划? 1.1两个思想问题 1.2为什么数据挖掘不是万能的 1.3业务背景与目标 1.4把握数据  1.5总结 二、 准备数据:如何处理出完整、干净的数据? 2.1找到数据 2.2数据探索

    2024年02月05日
    浏览(62)
  • 【Python】数据分析+数据挖掘——探索Pandas中的数据筛选

    当涉及数据处理和分析时,Pandas是Python编程语言中最强大、灵活且广泛使用的工具之一。Pandas提供了丰富的功能和方法,使得数据的选择、筛选和处理变得简单而高效。在本博客中,我们将重点介绍Pandas中数据筛选的关键知识点,包括条件索引、逻辑操作符、 query() 方法以及

    2024年02月15日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包