持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第23天,点击查看活动详情
1.什么是离群值?
由于各种各样的原因,数据中会包含离群值。如果是首次执行处理的数据,就和缺失值一样。离群值可能会使统计指标失真。如果是类似机器学习那样,需要对训练数据进行分析并进行某种预测,将离群值从训练数据中删除则可以有效地提高模型的预测精度。 当然还有一些不应当将离群值删除的情况。例如,生产工厂使用的传感数据进行异常检测。由于输入错误或测量误差等原因产生的离群值有时也叫异常值。
综上所述,虽然这些都被称为离群值,但是可以通用的正确处理方法是不存在的。因此,需要理解所需处理数据特征的基础上,检测离群值并采用合适的方法对其进行处理。
2.Z分数
首先创建一个Series对象
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方法计算出。
mean=ser.mean()
std=ser.std(ddof=0)
print(mean)
print(std)
z分数是将每个身高数据减去平均值,再除以标准差后得到的值。
zscore=(ser-mean)/std
zscore
从上述结果可以看到,我们已经对各身高数据计算出了z分数。作为基于z分数的离群值检测方法,通常是将z分数小于-3或大于3的值作为离群值。故我们可以看到9的z分数明显是一个误输入导致的离群值。
ser[(zscore<-3)|(zscore>3)]
3.四分位距
3.1 什么是四分位距?
所谓四分位距是用于表示数据离散程度的指标之一。当数据的值按由大到小的顺序进行排列时,将数据分成四等份的分割点的值称为四分位数。