[英]Pandas - plot cumulative proportion of column
我有一個dataframe列,它是0、1或2。我想在堆積的條形圖中繪制一段時間內的相對比例。 例如,如果值是:
0 1 2 2 0 0 1
然后將0-%值(四舍五入為1.dp):
100 50 33 25 40 50 42
並且1-%的值將是(再次舍入為1.dp):
0 50 33 25 20 33
我希望將0、1、2比例全部堆疊在一個欄中,以顯示相對比例如何隨時間變化。
好吧,首先我要強制性地抱怨您到目前為止沒有提供任何嘗試,可恥的是;)。
不過,讓我們為您服務。 首先應該將這項任務分成幾步。 我們需要:1.為每個值創建指標列2.我們需要為每個值求和3.將其除以相應的行號(因為索引從0開始,所以為+1)4.繪制漂亮的東西
我的嘗試是-不是很漂亮,而是蠻力的編碼-:
# Create Example Data
df = pd.DataFrame(np.random.randint(0,4, 10), columns=['A'] )
# The function to make it one go
def create_rolling_stack(df, column):
# Create the Indicators also called OneHotEncoding or DummyEncoding
dum = pd.get_dummies(df[column])
# build cumsum
cums = dum.cumsum()
# reset index
cums = cums.reset_index(drop=True)
# create the divisior
cums['div'] = cums.index.values +1
# ugly but divde each column by the respective row number
for col in cums.columns:
cums[col] = cums[col]/cums['div']
cums = cums.drop('div', axis = 1)
# Plot this awesome thing, note that stacked is set to True
cums.plot(kind= 'bar', stacked = True )
plt.show()
希望能幫助到你
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.