【问题标题】:Python Stacked HistogramPython 堆叠直方图
【发布时间】:2015-11-28 22:15:24
【问题描述】:

假设我有这个 pandas 数据框,

    pC  Truth
0   0.601972    0
1   0.583300    0
2   0.595181    1
3   0.418910    1
4   0.691974    1

'pC' 是 'Truth' 为 1 的概率。'Truth' 是二进制值。 我想创建概率的直方图,每个 bin 的内部将是比例 0 与比例 1。

我尝试了以下,

df[['pC','Truth']].plot(kind='hist',stacked=True)

它只是将“真相”值置于 0 和 1 之间。

可重现:

shape = 1000
df_t = pd.DataFrame({'pC': np.random.rand(shape),
                     'Truth':np.random.choice([0,1],size=shape)})
df_t['factor'] = pd.cut(df_t.pC,5)

我该怎么做?谢谢

【问题讨论】:

  • 发布可重现代码,例如使用dput(df)
  • 我不明白这个问题。 pC 的每个值如何代表真理为 1 的概率?每一行代表什么?一个队列?一个样品?一个人?堆叠行意味着什么?
  • 您真的有第三列,它始终为 0,因此根本不添加任何信息?
  • 我认为输出几乎已经告诉您有关 df 的信息。您可以复制信息,并在pd.read_clipboard() 中创建数据框每个观察都是一个人,并且有“真相”1 和0。1 非常罕见,我只是复制粘贴df.head()。我会更新代码。没有第三列,如果参考第一列,就是索引。
  • @NapitupuluJon:不,输出没有告诉我们任何信息,而且您不必要地让复制变得痛苦。您的数据框 sn-p 肯定会被截断,因为它只包含 Truth=0 条目,而不包含 Truth=1。您需要发布一个包含 Truth=0 和 1 值的 sn-p。再次,使用dput(df) 并给我们发一个sn-p。如果你拒绝post reproducible code,这是在这里发帖的基本礼貌,这个问题应该并且将会被关闭。

标签: python pandas plot histogram stacked


【解决方案1】:

根据我对您的意思的解释:

  • 创建传统的直方图计数与概率分箱(水平,像往常一样),一些binsize。仅适用于 Truth==0 的数据框
  • 现在用互补概率值 (1-pC) 为该 bin 扩充该数据帧 Truth==1
  • 现在将增强后的 df 绘制为堆叠条形图(可能为互补的 Truth==1 条形图使用白色填充颜色)

如果您发布可重现的代码(使用 dput)并确认这是您想要的,我将发布代码。否则,请发布指向某些图片的链接,以显示您想要的内容。

【讨论】:

  • 我不熟悉 dput。但我会使用重现它。直方图通常只需要一个变量,我将它与“PC”一起使用。那么我应该使用 pd.cut 并将其转换为条形图吗?这不是 pC 与 (1-pC) 的比例,而是每个 bin 都包含真相 0 vs 1 的比例。在每个 bin 包含多个观察的直方图中,我希望它具有“真相比例”0 vs 1。这有意义吗?
  • 已经给我代码了。将dput(df) 的输出粘贴到您的问题中。然后我们可以尝试几个版本。
【解决方案2】:

解决了这个问题,

shape = 1000
df_t = pd.DataFrame({'pC': np.random.rand(shape),
                     'Truth':np.random.choice([0,1],size=shape)})
df_t['factor'] = pd.cut(df_t.pC,5)
df_p = (df_t[['factor','Truth']]
        .pivot_table(columns='Truth',index='factor',aggfunc=len,fill_value=0)
        .reset_index())
df_p[['factor',0,1]].plot(kind='bar',stacked=True,x='factor');

【讨论】:

    猜你喜欢
    • 2014-03-12
    • 2016-12-19
    • 2017-02-05
    • 1970-01-01
    • 2021-07-20
    • 2021-11-24
    • 2022-01-16
    • 1970-01-01
    相关资源
    最近更新 更多