如何用箱线图检测异常值并返回其索引
时间: 2024-05-02 16:18:19 浏览: 139
可以使用Python中的pandas和matplotlib库来绘制箱线图并检测异常值。以下是一个示例代码:
```python
import pandas as pd
import matplotlib.pyplot as plt
# 创建一个包含异常值的DataFrame
data = pd.DataFrame({'A': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24],
'B': [10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 100]})
# 绘制箱线图
plt.boxplot(data.values)
plt.show()
# 检测异常值
q1 = data.quantile(0.25)
q3 = data.quantile(0.75)
iqr = q3 - q1
low = q1 - 1.5 * iqr
high = q3 + 1.5 * iqr
outliers = data[(data < low) | (data > high)]
outlier_index = outliers.dropna(how='all').stack().reset_index()['index'].tolist()
print('异常值索引:', outlier_index)
```
该代码创建了一个包含异常值的DataFrame,并使用matplotlib库绘制了箱线图。然后,使用pandas库计算出数据集的四分位数和IQR(四分位距),并根据IQR计算出内部和外部的离群值。最后,使用dropna()方法删除NaN值,并使用reset_index()方法获取索引,并将其转换为列表。这个列表中包含了所有的异常值的索引。
阅读全文