【问题标题】:Plotting side by side bar graph using two dataframes使用两个数据框并排绘制条形图
【发布时间】:2018-12-18 19:55:52
【问题描述】:

我有 2 个数据框,其中包含品牌和计数列。

例子:

brand | count
------+-------
Gucci | 1234
Chanel| 234444

DF1 的品牌比 DF2 多。我想创建一个条形图,其中 x 轴是所有品牌,y 轴是计数。我不知道如何实现这一点,所以我得到了按品牌分组的每个数据框的并排条形图。

  ax = df_pred.plot()
  prev_pred.plot(ax=ax)
  plt.show()

我尝试了此代码,但无法将其按品牌分组。我使用 sns.barplot 创建单独的条形图,但我想覆盖它们。我想要 DF1 中的所有品牌,因此 DF2 中的一些计数将为 0,但这就是我想要比较的。任何帮助深表感谢。

【问题讨论】:

  • 您首先要创建一个包含两个初始数据的数据框。要与 pandas 绘图功能一起使用,您需要一个宽格式的数据框,要与 seaborn 一起使用,您需要一个长格式的数据框。
  • 好的,如果我合并数据框(使用左连接),如何使每个计数列成为条形?
  • 使用joined_df.plot.bar() ?
  • 如果我这样做,我不会在 x 轴上获得品牌名称。我可以传递标签的 df 行吗?
  • 随意在问题中重现您的问题。

标签: python pandas matplotlib seaborn


【解决方案1】:

IIUC:

df1 = pd.DataFrame(dict(Brand=[*'GC'], Count=[4, 6]))
df2 = pd.DataFrame(dict(Brand=[*'GCXYZ'], Count=[3, 6, 1, 3, 5]))

pd.concat({
    'One': df1.set_index('Brand').Count, 'Two': df2.set_index('Brand').Count
}, axis=1).plot.bar()

【讨论】:

    猜你喜欢
    • 2020-05-30
    • 2022-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-06
    • 2020-07-25
    相关资源
    最近更新 更多