【数据分析&数据挖掘】异常值的判断与去除——3σ & 箱线图分析
import pandas as pd
# 异常值 ——远离正常值范围的错误值
# 异常值 ——删掉
# 异常值判断 ——3σ 箱线图分析
# 3σ 接住标准正态部分得到的规律——99.73%都在(μ-3α,μ+3α)之间,超过这个范围的数据认为是异常的
def three_sigma(data):
    """
    进行3sigma异常值剔除
    :param data: 原数据——series
    :return: bool数组
    """
    # 上限
    up = data.mean() + 3 * data.std()
    # 下线
    low = data.mean() - 3 * data.std()
    # 在上限与下限之间的数据是正常的
    bool_index = (data < up) & (data > low)
    return bool_index
def box_analysis(data):
    """
    箱线图分析去除异常值
    :param data: 原数据——series
    :return: bool数组
    """
    # 上四分位数
    qu = data.quantile(q=0.75)
    # 下四分位数
    ql = data.quantile(q=0.25)
    # 计算四分位间距
    iqr = qu - ql
    # 上限
    up = qu + 1.5 * iqr
    # 下限
    low = ql - 1.5 * iqr
    bool_index = (data < up) & (data > low)
    return bool_index
# 验证——加载detail
detail = pd.read_excel("../day05/meal_order_detail.xlsx")
print("detail的列索引: \n", detail.columns)
print("detail的形状: \n", detail.shape)
# 对amounts列进行异常值处理
bool_index = three_sigma(detail.loc[:, "amounts"])
bool_index = box_analysis(detail.loc[:, "amounts"])
print("bool_index: \n", bool_index)
# 获取异常值处理之后的结果
detail = detail.loc[bool_index, :]
print("异常值处理之后的结果: \n", detail.shape) 相关推荐
  june0    2020-06-16  
   yinyang00    2020-05-03  
   简单的快乐    2020-03-06  
   JasonZhangOO    2020-01-03  
   learnpy    2019-12-02  
   anyushan    2019-06-28  
   mengjizhiyou    2017-05-15  
   timcompp    2018-06-30  
   zidingxiangyu    2018-09-16  
   天行九歌    2018-08-22  
   tracy    2018-08-09  
   hnyzyty    2018-06-18  
   Sunnynanbing    2015-09-06  
   GavinGuan    2018-07-04  
   Pythonandme    2019-01-07  
   sayhaha    2018-09-17  
   CandraLee    2018-08-16  
   xiaoxixi    2018-07-03  
   jaybeat    2017-10-17