【问题标题】:Boxplot and data outliers箱线图和数据异常值
【发布时间】:2018-03-12 15:13:48
【问题描述】:

我有字典形式的数据,我将其转换为 pandas,我试图对 68 和 72 范围之外的数据进行箱线图绘制。最终,我试图将方框印迹的标题旋转 90 度并排除如果可能,异常数据。在我的真实世界场景下面的这个片段中,如果只有少数异常值在 68 和 72 范围之外,则无法读取列标题,也没有必要显示箱线图。非常感谢任何提示...

我将编写一些模仿我的真实应用程序的代码。

df = pd.DataFrame(dict(a=[71.5,72.8,79.3],b=[70.2,73.3,74.9],c=[63.1,64.9,65.9],d=[70.1,70.9,70.9]))

标记太热:

TooHot = df.apply(lambda x: not (x > 72).any())
print('These zones are too warm')
df[TooHot[~TooHot].index].boxplot()
plt.show()

标记太酷了:

TooCool = df.apply(lambda x: not (x < 68).any())
print('These zones are too cool')
df[TooCool[~TooCool].index].boxplot()
plt.show()

【问题讨论】:

    标签: python python-3.x matplotlib boxplot data-science


    【解决方案1】:

    .boxplot() 中的关键字参数 showfliers=False 将删除离群值,使其不再显示在图上。 使用vert=False 将使箱线图水平(我认为这就是您要问的?

    matplotlib boxplots 的文档是一个很好的起点:https://matplotlib.org/api/_as_gen/matplotlib.pyplot.boxplot.html

    【讨论】:

    • 你有什么技巧可以将我的代码中的异常值与上面的df.apply结合起来吗?
    • df_toocool=df[df['Column']&lt;68] 会给你一个数据框的副本,其中只有 'Column' 列中小于 68 的值。然后你可以根据需要绘制吗?不确定您最初的问题到底想要什么...
    • 我正在尝试将数据过滤合并到一个语句中,以标记数据是否超出 68 或 72 的范围。关于如何做到这一点的任何想法? IE 类似df_OutOfRange=df[df['Column']&lt;68, df['Column']&gt;72]
    • df_OutOfRange=df[(df['Column']&lt;68) &amp; (df['Column']&gt;72)] 会给出异常值。
    • 我收到一个关于“列”的 Python 错误 - # 重复列和可能的降维...有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 2021-11-06
    • 2023-03-12
    • 2017-03-21
    • 1970-01-01
    • 1970-01-01
    • 2013-07-17
    • 2014-03-28
    • 1970-01-01
    相关资源
    最近更新 更多