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

Posted tree0108

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据分析&数据挖掘异常值的判断与去除——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)

以上是关于数据分析&数据挖掘异常值的判断与去除——3σ & 箱线图分析的主要内容,如果未能解决你的问题,请参考以下文章

高中散点图怎么判断异常值

如何判别测量数据中是不是有异常值?

黑马程序员《数据清洗》学习笔记数据清洗与检验部分内容

Mysql去除中文字符&判断字段是不是有中文字符

R语言之实战分析

去除与Pandas中相邻点偏离太多的点