簡體   English   中英

從 pandas dataframe ZDCA758FD47F2BCD3ZBBF3F20BBFE2E975 表創建 plot

[英]Create a plot from a pandas dataframe pivot table

我是 python 的新手,想知道如何在我使用 pivot 表 function 創建的數據上創建條形圖。

#Create a pivot table for handicaps count calculation for no-show people based on their gender 
pv = pd.pivot_table(df_main, values=['hipertension','diabetes','alcoholism'], 
                     columns='status',index='gender',aggfunc=np.sum)
#Reshape the pivot table for easier calculation 
        
data_pv = pv.unstack().unstack('status').reset_index().rename(columns={'level_0':'category','No-Show':'no_show', 'Show-Up':'show_up'})
        
data_pv['no_show_prop'] = (data_pv['no_show']/
                          (data_pv['no_show']+data_pv['show_up']))*100
data_pv

結果:

status  category    gender  no_show show_up no_show_prop
0   alcoholism      F        308       915     25.183974
1   alcoholism      M        369      1768     17.267197
2   diabetes        F        1017     4589     18.141277
3   diabetes        M        413      1924     17.672229
4   hipertension    F        2657    12682     17.321859
5   hipertension    M        1115     5347     17.254720

我想創建一個條形圖,其中類別為 x 軸,no_show_prop 為 y 軸,兩個不同的 colors 條表示每個類別的女性和男性。 我也嘗試過使用 groupby,但它並沒有像我想要的那樣出現。

而不是像下圖中的條形圖,我想創建一個條形圖,其中類別為 x 軸,no_show_prop 為 y 軸,兩個不同的 colors 條形表示每個類別的女性和男性。 我也嘗試過使用 groupby,但它並沒有像我想要的那樣出現。

Starting with data_pv , reshape the data into a wide form, with pandas.Dataframe.pivot or pandas.DataFrame.pivot_table , that's easier to plot with pandas.DataFrame.plot , which will use the index as the x-axis, and the columns作為條形值。

  • pivot_table如果需要聚合值(例如'sum'
  • pivot如果不需要聚合

kind='bar'用於條形 plot,或kind='line'用於線 plot。 取決於所需的 plot,兩者都可以工作。

df = data_pv.pivot(index='category', columns='gender', values='no_show_prop')

df現在看起來像:

gender                F          M
category                          
alcoholism    25.183974  17.267197
diabetes      18.141277  17.672229
hipertension  17.321859  17.254720

然后你可以簡單地做:

df.plot(kind='bar')

在此處輸入圖像描述

這可以使用seaborn的長格式 dataframe 來完成,這使得制作分類條形圖變得非常容易,而無需將 Z6A8064B5DF479455500553C47C50 轉換為寬格式DZ50。

import seaborn as sns

sns.barplot(x='category', y='no_show_prop', hue='gender', data=df)

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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