📜  matplotlib boxplot 删除异常值 - Python (1)

📅  最后修改于: 2023-12-03 15:17:35.129000             🧑  作者: Mango

Matplotlib Boxplot 删除异常值 - Python

本文将介绍如何使用 Matplotlib 中的 Boxplot 来删除异常值。

什么是异常值?

异常值(Outlier)指的是在数据集中与其他值相比,具有明显不同特征或数值的数值。

例如,对于一个包含身高数据的数据集,如果数据中出现了一个数值远高于其他值的数值(例如,200cm),那么这个数值就可以被认为是一个异常值。

如何使用 Boxplot 删除异常值?

在 Matplotlib 中,我们可以使用 Boxplot 来可视化数据分布,并从中识别出异常值。Boxplot 显示数据集的五个重要统计量:最小值、下四分位数、中位数、上四分位数和最大值。

在 Boxplot 中,异常值会显示为独立的点。为了删除这些异常值,我们需要根据一定的规则来确定哪些点应该被删除。

在本文中,我们将采用 Tukey 法来删除异常值。该方法定义了异常值为:

  • 小于等于下四分位数减 1.5 倍的四分位距的数据点
  • 大于等于上四分位数加 1.5 倍的四分位距的数据点

下面是一个基本的使用 Boxplot 进行异常值删除的示例代码:

import matplotlib.pyplot as plt
import numpy as np

# 生成数据
np.random.seed(1)
data = np.concatenate([np.random.normal(0, 1, 50), np.random.normal(6, 1, 50)])

# 绘制 Boxplot
fig, ax = plt.subplots()
ax.boxplot(data)

# 计算上下限
q1 = np.percentile(data, 25)
q3 = np.percentile(data, 75)
iqr = q3 - q1
upper_bound = q3 + 1.5 * iqr
lower_bound = q1 - 1.5 * iqr

# 删除异常值
data = data[(data > lower_bound) & (data < upper_bound)]

# 绘制删除异常值后的 Boxplot
fig, ax = plt.subplots()
ax.boxplot(data)

在上面的示例代码中,我们首先生成一个包含 100 个数据点的数据集。然后,我们使用 Boxplot 将数据集可视化。接着,我们计算出上下限,并使用这些限制来删除那些异常值。

最后,我们再次绘制 Boxplot,以查看是否成功删除了异常值。

总结

本文介绍了如何使用 Matplotlib 中的 Boxplot 来删除异常值。通过了解什么是异常值以及如何确定应该删除哪些异常值,我们可以更好地理解如何使用 Boxplot 进行异常值删除。