4.11.3 检测与处理异常值
异常值是指数据中个别值的数值明显偏离其余的数值,有时也称为离群点,检测异常值 就是检验数据中是否有录入错误以及是否含有不合理的数据
异常值的存在对数据分析十分危险,如果计算分析过程的数据有异常值,那么会对结果 会产生不良影响,从而导致分析结果产生偏差乃至错误
比如在分析银行欺诈案例时,核心就是要发现异常值,这个时候异常值对我们是有用的,再比如,在统计某个城市的平均收入的时候,有人月收入是好几个亿,这个时候这个人就是 一个异常值,这个异常值会拉高城市的整体平均收入,因此可能会得到一个不真实的分析结果
常用的异常值检测主要为具体业务法、3σ原则和箱线图分析三种方法
(1)、具体业务法
根据对业务的理解,然后对每一个指标设定一个合理的范围,一旦超过这个范围,则认为是异常值。比如收入,一般来说都是正数,如果出现小于 0,则认为是异常值。再比如年龄,正常的年龄可能在 100 以内,如果出现年龄是好几百的,那么也认为是异常值。代码实现:
In [1]:
import numpy as np import pandas as pd
In [5]:
df = pd.read_excel('./data/stinfo.xlsx',sheet_name='Sheet11',index_col = 0) df
Out[5]:
姓名 | 学号 | 出生日期 | 年龄 | 籍贯 | 性别 | 身高 | 体重 | 分数 | |
---|---|---|---|---|---|---|---|---|---|
0 | 甲一 | 50 | 2001年1月1日 | 19 | 福田 | 男 | 172 | 69 | -80 |
1 | 乙二 | 51 | 1999年2月2日 | 8 | 龙岗 | 男 | 180 | 77 | 95 |
2 | 丙三 | 52 | 2002年3月3日 | 18 | 南山 | 女 | 160 | 49 | 85 |
3 | 丁四 | 53 | 2000年4月4日 | 20 | 龙岗 | 男 | 275 | 7 | 169 |
4 | 张三 | 54 | 2001年5月5日 | 12 | 宝安 | 女 | 165 | 53 | 88 |
5 | 李四 | 55 | 2000年6月6日 | 20 | 宝安 | 男 | 169 | 63 | 90 |
6 | 王五 | 56 | 1999年7月7日 | 21 | 龙岗 | 女 | 159 | 48 | 82 |
7 | 赵六 | 57 | 2001年8月8日 | 19 | 福田 | 女 | 52 | 56 | 990 |
8 | 周七 | 58 | 2001年5月5日 | 40 | 龙岗 |