箱线图介绍
箱线图通过绘制数据的中位数、四分位数、最大值和最小值等信息,可以帮助检测数据中的异常值。在箱线图中,超出1.5倍四分位距的数据点被视为异常值。
箱线图代码
这段代码主要进行了以下几个操作:
- 创建一个包含异常值的数据集。
- 绘制这个数据集的箱线图。
- 计算箱线图中的异常值。
- 删除异常值。
- 可视化删除异常值后的数据,并标出异常值。
- 将异常值存入数组并打印出来。
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
# 创建一个包含异常值的数据集
data = np.concatenate((np.random.normal(10, 2, 100), [20, 25, 30, 35, 40]))
# 绘制箱线图
fig, ax = plt.subplots()
ax.boxplot(data)
# 计算箱线图中的异常值
q1, q3 = np.percentile(data, [25, 75])
iqr = q3 - q1
low_threshold = q1 - 1.5 * iqr
high_threshold = q3 + 1.5 * iqr
outliers = data[(data < low_threshold) | (data > high_threshold)]
# 删除异常值
data = data[(data >= low_threshold) & (data <= high_threshold)]
# 可视化数据,标出异常值
fig, ax = plt.subplots()
ax.boxplot(data, showfliers=True, flierprops={'marker': 'o', 'markerfacecolor': 'red', 'markersize': 8})
ax.scatter(np.ones(len(outliers)), outliers, marker='o', color='red')
# 可视化删除后的数据
fig, ax = plt.subplots()
ax.boxplot(data)
# 将异常值存入数组并打印
removed_outliers = outliers.tolist()
print("Removed Outliers:", removed_outliers)
plt.show()
箱线图结果图
- 原数据
- 标记后数据
- 剔除后数据