数据预处理中离群值的处理

357 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第23天,点击查看活动详情

1.什么是离群值?

由于各种各样的原因,数据中会包含离群值。如果是首次执行处理的数据,就和缺失值一样。离群值可能会使统计指标失真。如果是类似机器学习那样,需要对训练数据进行分析并进行某种预测,将离群值从训练数据中删除则可以有效地提高模型的预测精度。 当然还有一些不应当将离群值删除的情况。例如,生产工厂使用的传感数据进行异常检测。由于输入错误或测量误差等原因产生的离群值有时也叫异常值。

综上所述,虽然这些都被称为离群值,但是可以通用的正确处理方法是不存在的。因此,需要理解所需处理数据特征的基础上,检测离群值并采用合适的方法对其进行处理。

2.Z分数

首先创建一个Series对象 image.png

import pandas as pd
import numpy as np
height=[178,190,187,179,192,186,188,181,187,1.81,177,190,181,178,180,171]
ser=pd.Series(height)
ser

这里我们对Series对象ser的各身高数据计算Z分数。Z分数使用平均值和标准差进行计算。而平均值可以使用mean方法,标准差可以使用std方法计算出。

image.png

mean=ser.mean()
std=ser.std(ddof=0)
print(mean)
print(std)

z分数是将每个身高数据减去平均值,再除以标准差后得到的值。

image.png

zscore=(ser-mean)/std
zscore

从上述结果可以看到,我们已经对各身高数据计算出了z分数。作为基于z分数的离群值检测方法,通常是将z分数小于-3或大于3的值作为离群值。故我们可以看到9的z分数明显是一个误输入导致的离群值。

image.png

ser[(zscore<-3)|(zscore>3)]

3.四分位距

3.1 什么是四分位距?

所谓四分位距是用于表示数据离散程度的指标之一。当数据的值按由大到小的顺序进行排列时,将数据分成四等份的分割点的值称为四分位数。

image.png