Python堆叠直方图



假设我有这个pandas数据框架,

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

'pC'是' true '为1的概率。"真理"是二进制值。我想创建一个概率的直方图,每个箱子里面是0和1的比例。

我试了以下命令,

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

它只是把' 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)

我该怎么做?由于

根据我对你意思的理解:

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

如果你发布可复制的代码(使用dput),并确认这是你想要的,我将发布代码。否则,发布一个链接到一些图片显示你想要的。

解决这个问题,

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');

相关内容

  • 没有找到相关文章

最新更新