簡體   English   中英

熊貓-列的累計比例

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM