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


     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的列索引: 
    ", detail.columns)
    54 print("detail的形状: 
    ", 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: 
    ", bool_index)
    60 
    61 # 获取异常值处理之后的结果
    62 detail = detail.loc[bool_index, :]
    63 print("异常值处理之后的结果: 
    ", detail.shape)
  • 相关阅读:
    Weblogic学习笔记
    Shiro权限使用
    Shiro权限框架使用总结
    支付宝接口文档说明
    代码模拟实现十六进制转二进制
    代码模拟实现十六进制转换十进制
    四种内部类详细解释和代码示例
    Struts2_struts.xml写法和用法例子
    spring一些方法和用法例子
    Hibernate一些_方法_@注解_代码示例
  • 原文地址:https://www.cnblogs.com/Tree0108/p/12116099.html
Copyright © 2020-2023  润新知