【问题标题】:Create a plot from a pandas dataframe pivot table从 pandas 数据框数据透视表创建绘图
【发布时间】:2018-10-28 00:27:31
【问题描述】:

我是 python 新手,想知道如何在我使用数据透视表函数创建的数据上创建条形图。

#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 轴,两个不同颜色的条形表示每个类别的女性和男性。我也尝试过使用 groupby,但结果并没有达到我想要的效果。

我想创建一个条形图,而不是下图中的条形图,x 轴为类别,y 轴为 no_show_prop,两个不同颜色的条形图表示每个类别的女性和男性。我也尝试过使用 groupby,但结果并没有达到我想要的效果。

【问题讨论】:

    标签: python pandas matplotlib pivot-table bar-chart


    【解决方案1】:

    data_pv 开始,将数据重新整形为宽格式,使用pandas.Dataframe.pivotpandas.DataFrame.pivot_table,使用pandas.DataFrame.plot 更容易绘制,它将使用索引作为x 轴,列作为条形值。

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

    使用kind='bar' 绘制条形图,或使用kind='line' 绘制折线图。两者都可以,具体取决于所需的情节。

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

    【讨论】:

      【解决方案2】:

      这可以使用seaborn 对长格式的数据框完成,这使得制作分类条形图变得非常容易,而无需将数据框转换为宽格式。

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

      【讨论】:

        猜你喜欢
        • 2016-07-08
        • 1970-01-01
        • 2019-09-30
        • 2012-04-16
        • 1970-01-01
        • 1970-01-01
        • 2017-12-12
        • 2015-06-08
        • 1970-01-01
        相关资源
        最近更新 更多