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