【数据分析&数据挖掘】异常值的判断与去除——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