python - 从 Seaborn Boxplot 中提取异常值

标签 python matplotlib seaborn boxplot

有没有办法在绘制 Seaborn 箱线图后提取所有异常值?例如,如果我正在为以下数据绘制箱线图

      client                total
1      LA                     1
2      Sultan                128
3      ElderCare              1
4      CA                     3
5      More                  900

我希望在绘制箱线图后看到以下记录作为离群值返回。

2      Sultan                128
5      More                  900

最佳答案

Seaborn 使用 matplotlib 处理异常值计算,这意味着关键参数 whis 被传递到 ax.boxplot。此处记录了负责计算的特定函数:https://matplotlib.org/api/cbook_api.html#matplotlib.cbook.boxplot_stats .您可以使用 matplotlib.cbook.boxplot_stats 来计算而不是提取异常值。以下代码片段向您展示了计算及其与 seaborn 图的相同之处:

import matplotlib.pyplot as plt
from matplotlib.cbook import boxplot_stats
import pandas as pd
import seaborn as sns

data = [
    ('LA', 1),
    ('Sultan', 128),
    ('ElderCare', 1),
    ('CA', 3),
    ('More', 900),
]
df = pd.DataFrame(data, columns=('client', 'total'))
ax = sns.boxplot(data=df)
outliers = [y for stat in boxplot_stats(df['total']) for y in stat['fliers']]
print(outliers)
for y in outliers:
    ax.plot(1, y, 'p')
ax.set_xlim(right=1.5)
plt.show()

enter image description here

关于python - 从 Seaborn Boxplot 中提取异常值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53735603/

相关文章:

Python 异常处理和引发

python - 无法查看美国各州热图

python - 在seaborn中可视化直方图

python - 如何在 python 的 Axes3D 中使用循环绘制图例?

python - 网关超时在 Apache 上使用 Django 和 mod_wsgi

Python 语言环境感知字符串比较

python - Seaborn FacetGrid - 在最后一个子图之后放置单个颜色条

python - 如何在程序运行时更新 Matplotlib 绘图?

Python pyplot 直方图 : Adjusting bin width, 不是箱数

python - 密度与频率