【问题标题】:How to plot multiple column barplots under same labels如何在相同标签下绘制多个列条形图
【发布时间】:2020-02-07 04:55:24
【问题描述】:

我正在绘制我的数据框,其中包含许多列,每列都带有“TRUE”或“FALSE”标签(从 Excel 导入)。

类似的一个小例子是这样的:

df = pd.DataFrame({"a":["TRUE","FALSE","FALSE","TRUE","FALSE"],
"b":["TRUE","TRUE","FALSE","TRUE","TRUE"],
"c":["TRUE","FALSE","FALSE","FALSE","TRUE"],
"d":["FALSE","FALSE","TRUE","TRUE","FALSE"]})

我正在寻找一种方法来简明地总结 TRUE 和 FALSE 值如何在列之间分布。理想情况下,将创建如下图:

但我不确定如何创建它。我已经尝试过列表理解,比如尝试

sns.barplot([list(df[i].value_counts()) for i in df.columns])

但得到完全不同的东西。我什至不需要知道如何制作图例,我只是将它包含在示例中,希望能更好地描绘我所追求的。

【问题讨论】:

  • 听起来您正在寻找 2-bin 直方图

标签: python pandas numpy matplotlib seaborn


【解决方案1】:

给你:

df.stack().groupby(level=1).value_counts().unstack(0).plot.bar()

输出:

【讨论】:

    【解决方案2】:

    您已经尝试过更有效的方法。 应该在每个系列上计算value_counts,如果您想将其缩放到更大的帧。您只需要更改plot

    f = pd.concat(
          [df[s].value_counts() for s in df], axis=1, sort=False)
    
    f.plot(kind='bar')
    

    【讨论】:

      猜你喜欢
      • 2018-03-18
      • 1970-01-01
      • 2021-11-03
      • 1970-01-01
      • 2019-07-15
      • 2020-07-22
      • 2019-06-21
      • 1970-01-01
      相关资源
      最近更新 更多