zoukankan      html  css  js  c++  java
  • 【数据分析&数据挖掘】异常值的判断与去除——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)
  • 相关阅读:
    opencv-python下简单KNN分类识别
    眼下智能手机市场的一点感想
    利用base64库暴力破解base加密
    python爬虫 模拟登陆校园网-初级
    四月的街道
    bzoj 1212 [HNOI2004] L语言(不用AC自动机)
    bzoj 1567 [JSOI2008]Blue Mary的战役地图题解
    bzoj1789 Necklace Y型项链
    bzoj 1957 土地购买
    网络流24题做题日记
  • 原文地址:https://www.cnblogs.com/Tree0108/p/12116099.html
Copyright © 2011-2022 走看看