【问题标题】:how to plot an histogram with uneven bins in Python?如何在 Python 中绘制带有不均匀 bin 的直方图?
【发布时间】:2020-07-09 14:30:01
【问题描述】:

对于这段代码,我看到了这个直方图

'''

t = unique_seq_Dataframe.groupby(by="frequency").count()
unique_seq_Dataframe.frequency.hist(bins=range(0,50,2))

'''

对于这段代码,我看到了这个直方图

unique_seq_Dataframe.frequency.hist(bins=10)

我想查看第一个图中显示的分布,但我想保留 3081 和 4845 的第二个图中看到的条形图,而不会丢失第一个图的分辨率。 (注意数值分布在 1-50 之间,3081 和 4845 两个柱状图)

见下面的数据

【问题讨论】:

    标签: python pandas bar-chart histogram


    【解决方案1】:

    根据直方图的定义,您不能在保留较高值的同时保持较低分箱值的分辨率。 Binning 将数据点分组到最近的 bin 中,以便向您展示哪些是相关特征。如果您认为您的高值不是异常值,则低值之间的差异接近 0。也就是说,与 3000 和 10 之间的差异相比,10 和 5 之间的差异可以被认为是 0。

    但是,如果您将 3000 视为异常值,则 3000 和 10 之间的差异会人为地太大以至于不相关,因此它会被分组到 50 的 bin 中。10 和 5 之间的差异是相关的,并且这样你就得到了你想要的分辨率。

    您的直方图显示最大的两个数据点是异常值。如果您不想将它们视为异常值,那么低值基本上都是等价的,可以假定为 0。因此,您在第二张图中得到三个条形图。

    我将添加简单地扩展 y 轴和 bin 的数量:

    unique_seq_Dataframe.frequency.hist(bins=range(0,5000,2))
    

    可能会为您提供所需的图表,但不包含直方图信息。拥有如此多的 bin 来包含异常值会将您的直方图缩小为散点图,其中仅绘制了单个点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-01
      • 2016-02-03
      • 1970-01-01
      • 2020-11-04
      • 1970-01-01
      相关资源
      最近更新 更多