上文介绍了数据清洗的方法,箱线图分析,本文继续介绍另一种数据清洗的方法:Z-Score。Z-Score 方法就是一种常用的基于标准差来识别异常值的技术。
什么是 Z-Score?
Z-Score,又称为标准分数,是统计学中用于表示一个值与数据集均值之间的偏差程度的一种度量。具体而言,Z-Score 是一个观测值减去均值后,再除以标准差的结果。Z-Score 可以告诉我们这个观测值在标准正态分布中处于什么位置。数学表达式如下:
[ Z = \frac{(X - \mu)}{\sigma} ]
其中:
- ( X ) 表示单个观测值,
- ( \mu ) 表示观测值所在样本的均值,
- ( \sigma ) 表示样本的标准差。
如何使用 Z-Score 识别异常值?
Z-Score 方法通常用来识别那些距离均值太远的点,即那些在正态分布中属于尾部的观测值。一般认为,如果一个数据点的 Z-Score 超过一定的阈值(通常是 3 或 -3),则可以将其视为异常值。这是因为,在标准正态分布中,大约99.7%的数据点会落在均值加减3个标准差的范围内。
例如,如果一个数据点的 Z-Score 是 4,这意味着这个点比均值高出了4个标准差,这在正态分布中是非常罕见的事件,因此这个数据点很可能是一个异常值。
应用示例
假设我们有一个数据集,我们首先计算数据集的均值和标准差。然后,我们对数据集中的每一个观测值计算其 Z-Score。接下来,我们将 Z-Score 的绝对值与一个预设的阈值进行比较,比如3,如果 Z-Score 的绝对值大于3,则将该观测值标记为异常值。
在 Python 中,可以使用 Pandas 和 SciPy 库来执行 Z-Score 方法:
import pandas as pd
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
# 创建一个示例数据集
np.random.seed(0) # 设置随机种子以获得可重复的结果
sales_data