python使用箱型图剔除异常值的实现方法

 更新时间:2023年05月09日 16:25:13   作者:bug嘛我经常写  
python中的箱线图可用于分析数据中的异常值,下面这篇文章主要给大家介绍了关于python使用箱型图剔除异常值的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

箱型图

将一组数据从大到小排列,分别计算出,

  • 上四分位数𝑄3: 75%分位点所对应的值
  • 中位数𝑄2:         50%分位点对应的值
  • 下四分位数𝑄1: 25%分位点所对应的值
  • 上边缘(须):            Q3+1.5(Q3-Q1)
  • 下边缘(须):            Q1-1.5(Q3-Q1)

数据𝑥的合理范围为:

𝑄1 − 1.5(𝑄3 − 𝑄1)  ≤  𝑥  ≤  𝑄3 + 1.5(𝑄3 − 𝑄1)

        和使用3σ准则剔除异常值相比,箱线图不需要数据服从正态分布,能真实直观的表现数据形状;箱线图以四分位数和四分位距作为判断异常值的标准,四分位数具有一定的耐抗性,多达 25%的数据可以变得任意远而不会很大地扰动四分位数,使得异常值无法对数据形状造成巨大影响,因此箱形图识别异常值的结果比较客观。

pandas.DataFrame.quantile

对于dataframe形式的数据,可以直接调用DataFrame.quantile(),以快速计算箱型图的分位点。

DataFrame.quantile(q=0.5, axis=0, numeric_only=True, interpolation='linear')

参数:

  • q:float or array-like, default 0.5 (50% quantile),0 ≤ q ≤ 1之间的值,即要计算的分位数;
  • axis:{0, 1, ‘index’, ‘columns’}, default 0,对于行,等于0或“索引”,对于列,等于1或“列”;
  • numeric_only:bool, default True,如果为False,则还将计算日期时间和时间增量数据的分位数;
  • interpolation:{‘linear’, ‘lower’, ‘higher’, ‘midpoint’, ‘nearest’},当所需分位数位于两个数据点i和j之间时,此可选参数指定要使用的插值方法。

返回:(Series or DataFrame)

  • 如果q是数组,则将返回DataFrame,其中index为q,列为self的列,值为分位数。
  • 如果q为float,则index是self的列,值为分位数

示例:

import pandas as pd
import numpy as np
 
# 生成数据
d = pd.DataFrame({"SO2":[-1000, 5, 5, 10, 9, 12, 11, 100],
                     "NO2":[12, 52, 14, 10, 10, 23, 15, 9],
                     "CO2":[15, 23, 0, 24, 25, 7, 4, 715],
                     "O3":[17, 23, 33, 10000, 11, 47, 5, 22] })

q 为 float:

q 为 数组: 

代码实现 

# 箱型图判断异常点
def box_outlier(data):
    df = data.copy(deep=True)
    out_index = []
    for col in df.columns:             # 对每一列分别用箱型图进行判断
        Q1 = df[col].quantile(q=0.25)       # 下四分位
        Q3 = df[col].quantile(q=0.75)       # 上四分位
        low_whisker = Q1 - 1.5 * (Q3 - Q1)  # 下边缘
        up_whisker = Q3 + 1.5 * (Q3 - Q1)   # 上边缘
        # 寻找异常点,获得异常点索引值,删除索引值所在行数据
        rule = (df[col] > up_whisker) | (df[col] < low_whisker)  
        out = df[col].index[rule]
        out_index += out.tolist()  
    df.drop(out_index, inplace=True)
    return df

使用前文创建的数据

box_outlier(d)

参考

pandas.DataFrame.quantile

【PYTHON 机器学习】正态分布检验以及异常值处理3Σ原则

总结

到此这篇关于python使用箱型图剔除异常值的文章就介绍到这了,更多相关python箱型图剔除异常值内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Pytorch平均池化nn.AvgPool2d()使用方法实例

    Pytorch平均池化nn.AvgPool2d()使用方法实例

    平均池化层,又叫平均汇聚层,下面这篇文章主要给大家介绍了关于Pytorch平均池化nn.AvgPool2d()使用方法的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-02-02
  • Python3.4学习笔记之列表、数组操作示例

    Python3.4学习笔记之列表、数组操作示例

    这篇文章主要介绍了Python3.4列表、数组操作,结合实例形式分析了Python3.4列表的创建、元素追加、删除、排序等相关操作技巧,需要的朋友可以参考下
    2019-03-03
  • django在保存图像的同时压缩图像示例代码详解

    django在保存图像的同时压缩图像示例代码详解

    这篇文章主要介绍了django在保存图像的同时压缩图像,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • python代理工具mitmproxy使用指南

    python代理工具mitmproxy使用指南

    这篇文章主要介绍了python mitmproxy 使用指南,mitmproxy 可以用来拦截、修改、保存 HTTP/HTTPS 请求。以命令行终端形式呈现,类似于 Chrome 浏览器开发者模式的可视化工具,需要的朋友可以参考下
    2019-07-07
  • 升级anaconda中python到3.10版本的简单步骤

    升级anaconda中python到3.10版本的简单步骤

    anaconda是一个非常好用的python发行版本,其中包含了大部分常用的库,下面这篇文章主要给大家介绍了关于升级anaconda中python到3.10版本的简单步骤,需要的朋友可以参考下
    2024-03-03
  • 利用Python实现在同一网络中的本地文件共享方法

    利用Python实现在同一网络中的本地文件共享方法

    今天小编就为大家分享一篇利用Python实现在同一网络中的本地文件共享方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • 详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)

    详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)

    这篇文章主要介绍了详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • Python的bit_length函数来二进制的位数方法

    Python的bit_length函数来二进制的位数方法

    今天小编就为大家分享一篇Python的bit_length函数来二进制的位数方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • python:解析requests返回的response(json格式)说明

    python:解析requests返回的response(json格式)说明

    这篇文章主要介绍了python:解析requests返回的response(json格式)说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • python wxpython 实现界面跳转功能

    python wxpython 实现界面跳转功能

    wxpython没提供界面跳转的方式,所以就需要借助threading模块,本文给大家分享python wxpython 实现界面跳转功能,感兴趣的朋友跟随小编一起看看吧
    2019-12-12

最新评论