如何筛选异常值并处理它们?


简介

在数据集中,与大部分其他数据点脱颖而出的数据点被称为异常值。它们会扭曲统计测量结果,并掩盖数据中潜在的趋势,从而对数据分析、建模和可视化产生不利影响。因此,在开始任何研究之前,识别和处理异常值至关重要。

在这篇文章中,我们将探讨处理异常值的各种方法,以及如何检查它们。

异常值筛选

为了处理异常值,我们必须首先识别它们。以下是识别异常值的一些常用技术:

1. 视觉检查

使用图表和绘图(例如箱线图、散点图和直方图)可视化数据是查找异常值的一种方法。与大多数其他数据点有很大不同的数据点称为异常值。通过分析图表,我们可以确定异常值是真实的还是由错误或损坏的数据导致的。

2. Z 分数

Z 分数是一个统计量,它计算数据点偏离均值的标准差数量。通过计算每个数据点的 Z 分数,我们可以找到与大多数其他数据点有很大不同的数据点。Z 分数为 3 或更大的数据点通常被视为异常值。

3. 四分位距 (IQR)

四分位距是指数据第 25 个百分位数 (Q1) 和第 75 个百分位数 (Q3) 之间的区间。通过计算 IQR 并将其乘以 1.5 的系数,我们可以找到与大多数其他数据点有很大不同的数据点。任何低于 Q1 1.5 倍或高于 Q3 1.5 倍 IQR 的数据点通常被视为异常值。

处理异常值

在找到异常值后,我们需要确定如何处理它们。以下是处理异常值的一些常用方法:

1. 移除

从数据集中删除异常值是处理异常值最简单的方法。但是,此方法应谨慎使用,因为删除太多异常值可能会对数据集的统计测量产生重大负面影响,并掩盖关键趋势。在这样做时,记录过程和删除异常值的理由至关重要。

2. 转换

使用数学函数(如对数、指数或幂函数)转换数据是处理异常值的另一种方法。通过这种方法,数据集统计量的极值的影响将减小,并且更容易发现模式。

3. 插补

插补是指用估计值替换缺失或异常数据。可以使用多种方法进行数据插补,包括均值插补、中位数插补和回归插补。此方法应谨慎使用,因为它可能会在数据集中引入偏差并影响研究的准确性。

4. 分割

数据集分割是指根据不同的特征或属性将其分解成较小的组。通过分割数据,我们可以独立地研究每个组并找到每个组特有的模式。当处理有效但反映数据不同部分的异常值时,此方法可能很有用。

示例

import pandas as pd
import numpy as np
from scipy import stats

# Create a sample dataset
data = pd.DataFrame({'value': [10, 9, 8, 7, 6, 555, 999, 5, 6]})

# Calculate z-scores for each value in the dataset
z_scores = np.abs(stats.zscore(data))

# Identify outliers as any value with a z-score greater than 3
outliers = data[z_scores > 3]

# Replace outliers with the median value of the dataset
data[z_scores > 3] = data['value'].median()

# Print the updated dataset without outliers
print(data)

输出

  value
0     10
1      9
2      8
3      7
4      6
5    555
6    999
7      5
8      6

解释

  • 使用名为 value 的一列和 10 个值(包括一个值为 100 的异常值)生成一个示例数据集。

  • 使用 stats.zscore 函数(来自 SciPy 包)确定数据集中每个值的 Z 分数。数据点的 Z 分数表示它与均值的标准差数量。

  • 使用 print 函数打印新的数据集,其中不包含异常值。

  • 由于我们只关心与均值的偏差大小,而不是其方向,因此使用 np.abs 函数获取每个 Z 分数的绝对值。

  • 使用条件 z 分数 > 3 来识别任何 Z 分数大于 3 的值为异常值。

  • 使用 value 的中位数函数将异常值替换为数据集的中位数。

代码使用 Z 分数方法找到并从数据集中删除了异常值。已识别的异常值被替换为数据集的中位数。当样本量很大或数据呈正态分布时,此方法可能很有用。

需要注意的是,处理异常值还有其他方法,本例中使用的方法仅是一种方法。其他常见方法包括修剪、Winsorizing 和使用对异常值具有鲁棒性的机器学习算法。最佳方法将取决于数据集的特定特征和研究的目标。

结论

总之,异常值会对数据分析、建模和可视化产生负面影响,因此在开始任何研究之前识别和处理它们至关重要。通过使用视觉检查、Z 分数和 IQR 检查异常值,然后使用移除、转换、插补或分割处理它们,我们可以确保我们的分析是准确和有见地的。但是,务必谨慎使用这些方法并记录该过程。

更新于: 2023 年 3 月 10 日

134 次浏览

启动你的 职业生涯

通过完成课程获得认证

开始
广告