在数据清洗的过程中,异常值的检测及处理是非常重要的一部分,现就以下问题学习异常值的相关知识。
1.什么是异常值?
指样本中个别数值明显偏离其余的观测值,比如一个学生的年龄<0,身高>5m等等,这些数据都属于异常值
2.异常值有什么影响?
回归模型对异常值比较敏感,如果数据样本中存在异常值,那么模型的拟合,变量的系数、显著性等都会产生较大影响。
3.怎么检测异常值?
- 箱型图
首先计算变量的分位数(Q1、Q3),然后得到四分位数极差IQR=Q3-Q1,那么小于Q1-1.5IQR 或 大于Q3+1.5IQR的值称为异常值
代码如下:
# 函数:统计学方法计算每个字段的异常值情况
def outlier_box(data,cols_all,k=1.5):
'''
args:
data:数据源
cols_all:进行异常值分析的字段,列表形式
k:超过高低四分位数时IQR的比例,1.5:中度异常,3:重度异常
return:
data_outlier:
outlier_low:下部异常值
outlier_up:上部异常值
outlier_len:异常值记录条数
'''
outlier = {
}
for col in cols_all:
print(col)
# 下限
low = np.percentile(data[col],25) - k*(np.percentile(data[col],75)-np.percentile(data[col],25))
low = float(np.where(low<data[col].min(),np.nan,low))
# 上限
up = np