广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python数据分析中的异常值处理是怎样的
  • 842
分享到

python数据分析中的异常值处理是怎样的

2023-06-29 00:06:06 842人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

本篇文章为大家展示了python数据分析中的异常值处理是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。异常值异常值是指样本中的个别值,其数值明显偏离其余的观测值。异常值也称离群点,异常值的分析

本篇文章为大家展示了python数据分析中的异常值处理是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

异常值

异常值是指样本中的个别值,其数值明显偏离其余的观测值。异常值也称离群点,异常值的分析也称为离群点的分析。

常用的异常值分析方法为3σ原则、箱型图分析、机器学习算法检测,一般情况下对异常值的处理都是删除和修正填补,即默认为异常值对整个项目的作用不大,只有当我们的目的是要求准确找出离群点,并对离群点进行分析时有必要用到机器学习算法,其他情况下不用费精力去分析他们

1、异常值定义

在统计学中,离群点是并不属于特定族群的数据点,是与其它值相距甚远的异常观测。离群点是一种与其它结构良好的数据不同的观测值。

例如,你可以很清楚地看到这个列表中的离群点:[20,24,22,19,29,18,4300,30,18]

当观测值是一堆数字且都是一维时,辨别离群点很容易,但如果有数以千计的观测值或数据是多维的,你可能会需要更机智的方法来检测这些离群点。

python数据分析中的异常值处理是怎样的

2、异常值处理方式

2.1 均方差

3σ原则
如果数据服从正态分布,在3σ原则下,异常值被定义为一组测定值中与平均值的偏差超过三倍标准差的值。
在正态分布下,距离平均值3&sigma;之外的值出现的概率为 P(|x-&mu;|>3&sigma;)<=0.003,属于极个别的小概率事件。
如果数据不服从正态分布,也可以用远离平均值的多少倍标准差来描述

这个原则有个前提条件:数据需要服从正态分布

在3&part;原则下,如果观测值与平均值的差值超过3倍标准差,那么可以将其视为异常值。
正负3&part;的概率是99.7%,那么距离平均值3&part;之外的值出现的概率为P(|x-u| > 3&part;) <= 0.003,属于极个别的小概率事件。

import numpy as npimport pandas as pddef detect_outliers(data,threshold=3):    mean_d = np.mean(data)    std_d = np.std(data)    outliers = []        for y in data_d:        z_score= (y - mean_d)/std_d         if np.abs(z_score) > threshold:            outliers.append(y)    return outliers

2.2 箱形图

四分位间距 (IQR) 的概念被用于构建箱形图。IQR 是统计学中的一个概念,通过将数据集分成四分位来衡量统计分散度和数据可变性。

简单来说,任何数据集或任意一组观测值都可以根据数据的值以及它们与整个数据集的比较情况被划分为四个确定的间隔。四分位数会将数据分为三个点和四个区间。

四分位间距对定义离群点非常重要。它是第三个四分位数和第一个四分位数的差 (IQR = Q3 -Q1)。在这种情况下,离群点被定义为低于箱形图下触须(或 Q1 &minus; 1.5x IQR)或高于箱形图上触须(或 Q3 + 1.5x IQR)的观测值。

python数据分析中的异常值处理是怎样的

IQR是统计分散程度的一个度量,分散程度通过需要借助箱线图来观察,通常把小于 Q1 - 1.5 * IQR 或者大于 Q3 + 1.5 * IQR的数据点视作离群点,探测离群点的公式是:

outliers =  value < ( Q1 - 1.5 * IQR )  or value > ( Q3 + 1.5 * IQR )

这种探测离群点的方法,是箱线图默认的方法,箱线图提供了识别异常值/离群点的一个标准:

异常值通常被定义为小于 QL - l.5 IQR 或者 大于 Qu + 1.5 IQR的值,QL称为下四分位数, Qu称为上四分位数,IQR称为四分位数间距,是Qu上四分位数和QL下四分位数之差,其间包括了全部观察值的一半。

def detect_outliers(sr):    q1 = sr.quantile(0.25)    q3 = sr.quantile(0.75)    iqr = q3-q1 #Interquartile range    fence_low  = q1-1.5*iqr    fence_high = q3+1.5*iqr    outliers = sr.loc[(sr < fence_low) | (sr > fence_high)]    return outliers

3、实战

上面数据基础知识的介绍了,下面我们进入今天的正题,也就是利用Python与pandas进行数据分析,今天的主要目标就是找到数据中的异常值。(我们使用的是前面介绍的第一种方法)

3.1 加载数据

首先,我们需要加载进行分析的数据,同样使用beer的数据,不过这里的数据是经过处理的,可以看到abv属性列的值中大部分都是0.0*,基本都不超过1,但是也有数据是55,也就是说这些数据是远大于其他数据的,我们主要是对这部分数据进行处理。

class Repair_Dirty(object):    __init_data = 0    def __init__(self, filename):        self.filename = filename    def get_data(self):        if self.filename == " ":            # print("您输入的文件路径为空")            return        else:            self.__init_data = pd.read_csv(self.filename)        return self.__init_data#主函数定义一个对象,并实现对方法的调用if __name__ == "__main__":    file_path = 'dirty_beer_last.csv'    data_cla = Repair_Dirty(file_path)    data = data_cla.get_data()#得到数据

形如下面的数据图,红色框内数据为55的,就是我们所说的异常值,我们的目标就是通过第一种方法,将此类数据找出来。

python数据分析中的异常值处理是怎样的

3.2 检测异常值数据

使用第一种检测方式来检测异常值,我们主要是定义一个函数find_outlier(),并且函数是在类的内部实现的。

    # 找到异常值,abv列    def find_outlier(self, attribute):        data_att = self.__init_data[attribute]        # 找到异常值        outlier = data_att[np.abs(data_att - data_att.mean()) > 3 * data_att.std()]        print(data.loc[data[attribute] == 55])#对abv属性的异常值进行输出        #print(np.where(self.__init_data[attribute] == 55))  # 返回指定位置的索引        return outlier

下面的图片中可以看到整个数据表中有108行数据中abv值为55的,所以很明显,我们基本上已经达到了想要的目标,找到了数据中的异常值,根据索引或者id我们便可以将其进行值替换操作,对异常值进行修复。

python数据分析中的异常值处理是怎样的

3.3 显示异常值的索引位置

既然已经找到了异常值,那我们再对其进行索引显示就比较简单了,也就是一行代码的事,其实在上面代码中也可以看到,只不过上面这行代码被我们给注释掉了,下面将其单独拿出来显示。

print(np.where(self.__init_data[attribute] == 55))  # 返回指定位置的索引

这行代码就是对异常值索引进行显示了。

至此,我们今天的数据分析异常值处理的博文就写到这里了,小张同学仍在马不停蹄的进行学习,希望这篇文章能够帮助正在学习数据分析的小伙伴!!!
奥利给

最后,将源代码附上,有需要的小伙伴可以自取。

import pandas as pdimport numpy as npimport reclass Repair_Dirty(object):    __init_data = 0    def __init__(self, filename):        self.filename = filename    def get_data(self):        if self.filename == " ":            # print("您输入的文件路径为空")            return        else:            self.__init_data = pd.read_csv(self.filename)        return self.__init_data        # 找到异常值,abv列    def find_outlier(self, attribute):        data_att = self.__init_data[attribute]        # 找到异常值        outlier = data_att[np.abs(data_att - data_att.mean()) > 3 * data_att.std()]        print(data.loc[data[attribute] == 55])#对abv属性的异常值进行输出        print(np.where(self.__init_data[attribute] == 55))  # 返回指定位置的索引        return outlier        if __name__ == "__main__":    file_path = 'dirty_beer_last.csv'    data_cla = Repair_Dirty(file_path)    data = data_cla.get_data()    print((data))    if data is None:        print("路径为空,程序退出!!!")    else:        data = data_cla.fill_na()        outlier = data_cla.find_outlier()        print(outlier)

上述内容就是python数据分析中的异常值处理是怎样的,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网Python频道。

--结束END--

本文标题: python数据分析中的异常值处理是怎样的

本文链接: https://www.lsjlt.com/news/321287.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python数据分析中的异常值处理是怎样的
    本篇文章为大家展示了python数据分析中的异常值处理是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。异常值异常值是指样本中的个别值,其数值明显偏离其余的观测值。异常值也称离群点,异常值的分析...
    99+
    2023-06-29
  • Python数据异常值检测和处理的示例分析
    这篇文章主要介绍Python数据异常值检测和处理的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1 什么是异常值?在机器学习中,异常检测和处理是一个比较小的分支,或者说,是机器学习的一个副产物,因为在一般的预...
    99+
    2023-06-29
  • python数据分析实战指南之异常值处理
    目录异常值1、异常值定义2、异常值处理方式2.1 均方差2.2 箱形图3、实战3.1 加载数据3.2 检测异常值数据3.3 显示异常值的索引位置总结异常值 异常值是指样本中的个别值,...
    99+
    2022-11-13
  • Python数据分析基础之异常值检测和处理方式
    目录1 什么是异常值?2 异常值的检测方法1. 简单统计2. 3∂原则3. 箱型图4. 基于模型检测5. 基于近邻度的离群点检测6. 基于聚类的方法来做异常点检测7. 专门...
    99+
    2022-11-11
  • Python中的异常处理实例分析
    一、什么是异常在python中,错误触发的异常如下二、异常的种类在python中不同的异常可以用不同的类型去标识,一个异常标识一种错误。1 、常用异常类AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有...
    99+
    2023-05-16
    Python
  • Python中的Selenium异常处理实例分析
    本篇内容介绍了“Python中的Selenium异常处理实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在进行爬虫爬取淘宝商品信息时候...
    99+
    2023-06-30
  • 怎样进行python异常处理和面向对象编程的分析
    本篇文章给大家分享的是有关怎样进行python异常处理和面向对象编程的分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。    异常处理和面向对象...
    99+
    2023-06-04
  • python中文件操作与异常的处理是怎样的
    本篇文章为大家展示了python中文件操作与异常的处理是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、 文件的操作1.1创建文件格式:f = open(‘文件', ‘w')...
    99+
    2023-06-22
  • python数据分析入门是怎样的
    这篇文章将为大家详细讲解有关python数据分析入门是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。 随着Python自身功能的完善以及生态系统的扩展,Python在Web开...
    99+
    2023-06-02
  • Python数据分析过程是怎样的
    这篇文章主要介绍“Python数据分析过程是怎样的”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python数据分析过程是怎样的”文章能帮助大家解决问题。一、需求介绍该需求主要是分析某一种数据的历史...
    99+
    2023-06-26
  • Spring3.0.5 MVC的异常处理是怎样的
    本篇文章给大家分享的是有关Spring3.0.5 MVC的异常处理是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。SimpleMappingExceptionResolv...
    99+
    2023-06-17
  • 怎样解析Java的异常处理机制
    这期内容当中小编将会给大家带来有关怎样解析Java的异常处理机制,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。你觉得自己是一个Java专家吗是否肯定自己已经全面掌握了Java的异常处理机制在下面这段代码中...
    99+
    2023-06-17
  • Python数据分析中如何处理缺失值
    小编给大家分享一下Python数据分析中如何处理缺失值,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!让我们首先创建一个示例数据框并向其中添加一些缺失值。我们有一个 10 行 6 列的数据框。下一步是添加缺失值。 我们将使用...
    99+
    2023-06-25
  • Python异常处理的方法实例分析
    这篇文章主要介绍了Python异常处理的方法实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python异常处理的方法实例分析文章都会有所收获,下面我们一起来看看吧。什么是异常与异常处理异常 &m...
    99+
    2023-06-29
  • Python异常处理机制的示例分析
    这篇文章将为大家详细讲解有关Python异常处理机制的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。什么是异常?def num(a, b):   ...
    99+
    2023-06-22
  • Python基础中的魔法方法与异常处理是怎样的
    这期内容当中小编将会给大家带来有关Python基础中的魔法方法与异常处理是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一.魔法方法1.属性访问通常可以通过点(.)操作符的形式去访问对象的属性。cl...
    99+
    2023-06-25
  • React16中异常处理的示例分析
    这篇文章主要介绍React16中异常处理的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!异常处理在 React 15.x 及之前的版本中,组件内的异常有可能会影响到 Reac...
    99+
    2022-10-19
  • Java中异常处理的示例分析
    这篇文章主要介绍Java中异常处理的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!异常的定义在java中,异常就是java在编译、运行或运行过程中出现的错误总共有三种:1.编译错误 2.运行错误 3.逻辑错误...
    99+
    2023-06-25
  • 大数据处理中,Python有哪些常见的数据分析库?
    在当今信息化时代,大数据处理已经成为了各行各业必不可少的工作。而在大数据处理的过程中,数据分析是至关重要的一步。为了更加高效地完成数据分析工作,很多人都会使用Python编程语言进行数据处理。而Python作为一种非常流行的编程语言,其拥有...
    99+
    2023-11-06
    leetcode 大数据 关键字
  • python异常时语句处理的示例分析
    这篇文章给大家分享的是有关python异常时语句处理的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;3、网络爬虫;4、嵌...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作