【问题标题】:Extract outliers from Seaborn Boxplot从 Seaborn Boxplot 中提取异常值
【发布时间】:2018-12-12 03:24:58
【问题描述】:

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

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

我想在绘制箱线图后查看以下记录作为异常值返回。

2      Sultan                128
5      More                  900

【问题讨论】:

    标签: python matplotlib seaborn boxplot


    【解决方案1】:

    Seaborn 使用 matplotlib 处理异常值计算,这意味着将关键参数 whis 传递给 ax.boxplot。处理计算的特定函数记录在此处:https://matplotlib.org/api/cbook_api.html#matplotlib.cbook.boxplot_stats。您可以使用matplotlib.cbook.boxplot_stats 计算而不是提取异常值。以下代码 sn-p 向您展示了计算以及它与 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()
    

    【讨论】:

      【解决方案2】:

      下面的代码将为您提供一个异常值数组,使用它从数据框中提取值。

      from matplotlib.cbook import boxplot_stats  
      boxplot_stats(df.colname).pop(0)['fliers']
      

      【讨论】:

        猜你喜欢
        • 2021-03-06
        • 1970-01-01
        • 1970-01-01
        • 2017-08-06
        • 2015-04-06
        • 1970-01-01
        • 1970-01-01
        • 2014-09-27
        • 2021-09-20
        相关资源
        最近更新 更多