【问题标题】:Why is pandas inserting spaces in my histogram?为什么熊猫在我的直方图中插入空格?
【发布时间】:2016-09-06 17:23:00
【问题描述】:

可以在here找到CSV格式的示例数据。

给定以下代码:

figure()
grp.vis.plot(kind='hist', alpha=.5, normed=True)
show()

我得到下图:

为什么 pandas 会在图中插入空白?值的范围从 0 到 7,并且都表示出来,所以我看不出为什么会发生这种情况。

提前非常感谢!

【问题讨论】:

    标签: python pandas matplotlib histogram


    【解决方案1】:

    因为默认值10的参数binshist中:

    grp.vis.plot(kind='hist', alpha=.5, bins=7, normed=True)
    

    如果省略rwidth:

    grp.vis.plot(kind='hist', alpha=.5, bins=7)
    

    Docs:

    bins:整数或类似数组,可选

    如果给定一个整数,则返回 bins + 1 个 bin 边缘,与 numpy 版本 >= 1.3 的 numpy.histogram() 一致。

    如果 bins 是一个序列,则支持不等间距的 bins。

    默认为 10

    rwidth:标量或无,可选

    条的相对宽度,作为 bin 宽度的一部分。如果没有,自动计算宽度。

    如果 histt​​ype 是“step”或“stepfilled”则忽略。

    默认为无

    【讨论】:

    • 请注意,图片提供的内容与预期的有所不同。试试看:grp.vis.value_counts()
    【解决方案2】:

    抱歉,有点离题的自我推销,但也许你会发现我的图书馆 physt 很有用(参见 https://github.com/janpipek/physt )。除其他功能外,它还提供不同的分箱模式,其中一种 ("integer") 适用于整数数据的自动“分箱”。

    import pandas as pd
    import physt
    
    df = pd.read_csv("visanal_so.csv")
    ax = physt.h1(df.vis, "integer").plot(density=True, alpha=0.5)
    ax.set_ylabel("Frequency");
    

    附:请注意,该情节与原始情节相似,但与@jezrael 显示的情节不同。自动 pandas 分箱的行为有些奇怪,而且绝对不是您想要的方式。

    【讨论】:

    • 非常感谢。我一定会去看看的。
    猜你喜欢
    • 1970-01-01
    • 2018-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-05
    • 1970-01-01
    • 2020-10-19
    • 1970-01-01
    相关资源
    最近更新 更多