Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 1010|回复: 0

【数据分析&数据挖掘】异常值的判断与去除——3σ & 箱线图分析

[复制链接]
  • TA的每日心情
    奋斗
    7 天前
  • 签到天数: 745 天

    [LV.9]以坛为家II

    2041

    主题

    2099

    帖子

    70万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    704660
    发表于 2021-4-21 23:51:51 | 显示全部楼层 |阅读模式
     1 import pandas as pd
     2 
     3 # 异常值 ——远离正常值范围的错误值
     4 # 异常值 ——删掉
     5 
     6 # 异常值判断 ——3σ 箱线图分析
     7 
     8 # 3σ 接住标准正态部分得到的规律——99.73%都在(μ-3α,μ+3α)之间,超过这个范围的数据认为是异常的
     9 
    10 def three_sigma(data):
    11     """
    12     进行3sigma异常值剔除
    13     :param data: 原数据——series
    14     :return: bool数组
    15     """
    16 
    17     # 上限
    18     up = data.mean() + 3 * data.std()
    19     # 下线
    20     low = data.mean() - 3 * data.std()
    21 
    22     # 在上限与下限之间的数据是正常的
    23     bool_index = (data < up) & (data > low)
    24 
    25     return bool_index
    26 
    27 
    28 def box_analysis(data):
    29     """
    30     箱线图分析去除异常值
    31     :param data: 原数据——series
    32     :return: bool数组
    33     """
    34     # 上四分位数
    35     qu = data.quantile(q=0.75)
    36     # 下四分位数
    37     ql = data.quantile(q=0.25)
    38     # 计算四分位间距
    39     iqr = qu - ql
    40 
    41     # 上限
    42     up = qu + 1.5 * iqr
    43     # 下限
    44     low = ql - 1.5 * iqr
    45 
    46     bool_index = (data < up) & (data > low)
    47 
    48     return bool_index
    49 
    50 
    51 # 验证——加载detail
    52 detail = pd.read_excel("../day05/meal_order_detail.xlsx")
    53 print("detail的列索引: \n", detail.columns)
    54 print("detail的形状: \n", detail.shape)
    55 
    56 # 对amounts列进行异常值处理
    57 bool_index = three_sigma(detail.loc[:, "amounts"])
    58 bool_index = box_analysis(detail.loc[:, "amounts"])
    59 print("bool_index: \n", bool_index)
    60 
    61 # 获取异常值处理之后的结果
    62 detail = detail.loc[bool_index, :]
    63 print("异常值处理之后的结果: \n", detail.shape)
    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-3-29 23:38 , Processed in 0.059378 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表