2015-09-03 106 views
0

假設我有此數據幀熊貓,Python的疊加柱狀圖

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

「PC」是「真」作爲1「真」的概率是二進制值。 我想創建的概率直方圖,以及每個區間內將比例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) 

我該怎麼辦呢?由於

+0

**後再現的代碼**,使用例如'dput(df)' – smci

+0

我不明白這個問題。 pC的每個值如何是真值爲1的概率?每一行代表什麼?一個隊列?一個樣品?一個人?堆疊行意味着什麼? – smci

+0

你真的有第三列,總是0,因此根本沒有添加任何信息? – HeinzKurt

回答

0

與解決了這個,

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

根據我什麼,我想解釋你的意思是:

  • 創建傳統直方圖計數與概率分級(水平,像往常一樣),對於一些binsize。只是爲數據幀作爲與Truth==0
  • 現在增強與互補概率數據幀值(1-pC)該箱,用於Truth==1
  • 現在繪製增強DF爲堆疊柱形圖(推測用白色填充顏色爲互補Truth==1分段)

如果您發佈可重複的代碼(使用dput),並確認這是你想要的,我將發佈代碼。否則,發佈一個鏈接到一些圖像,顯示你想要的。

+0

我對dput並不熟悉。但我會用它來重現它。直方圖通常只需要一個變量,而我正在使用它'pC'。我應該使用pd.cut然後將其轉換爲條形圖嗎? 它不是pC vs(1-pC)的比例,但是每個bin都包含真值0與1之比。在每個bin包含多個觀察值的直方圖中,我希望它具有'真實比例0 vs這是否有意義? –

+0

已經給我的代碼。將'dput(df)'的輸出粘貼到你的問題中。然後我們可以踢幾個版本。 – smci