【问题标题】:Getting Row percentages in python to plot在python中获取行百分比来绘制
【发布时间】:2016-03-08 23:17:53
【问题描述】:

您好,我希望创建某种频率表,我可以在其中获取行(或列)百分比,目的是能够在条形图中并排绘制数据。输出看起来像这样:

       Male  Female
 Mon   21%     79%
 Tues  33%     67%
 Weds  11%     89%

目前我的数据如下所示:

Day  Gender
Mon  Male
Mon  Female
Mon  Female
Weds Female
Fri  Male

最后,我只想要 5 个条形图(每天一个),每个性别有两个条形图。我试过 groupby:

df.groupby(['day','gender']).size()

但这仅给出原始计数,并且两个直方图都无法解释,条形图看起来很奇怪,因为我无法正常化(某些日子的交易量比其他日子高得多)。任何帮助将不胜感激!

【问题讨论】:

    标签: python pandas histogram


    【解决方案1】:

    在您完成上述 groupby 之后,您需要取消堆叠结果(生成数据透视表)。

    gb = df.groupby(['Day','Gender']).size().unstack()
    >>> gb
    Gender    Female      Male
    Day                       
    Fri          NaN  1.000000
    Mon     0.666667  0.333333
    Weds    1.000000       NaN
    

    您可能希望用零填充 NaN (.fillna(0))。

    现在您可以将此结果除以行的总和:

    >>> gb.div(gb.sum(axis=1).values, axis=0)
    Gender    Female      Male
    Day                       
    Fri          NaN  1.000000
    Mon     0.666667  0.333333
    Weds    1.000000       NaN
    

    您可以通过附加 .plot(kind='bar') 来绘制此图

    【讨论】:

      猜你喜欢
      • 2015-05-10
      • 1970-01-01
      • 2016-06-12
      • 2021-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-14
      • 1970-01-01
      相关资源
      最近更新 更多