【问题标题】:How to bar plot a python dataframe grouping by more than one column如何条形图按多列分组的python数据框
【发布时间】:2020-10-10 21:12:16
【问题描述】:

我已经旋转了一个包含 3 列的数据框:月份、客户和数量。 我正在尝试分别按月和客户对这个数据框进行条形图分组,以了解他们在几个月内的交易量。

有人可以帮我吗?我尝试了很多方法,但无法更接近......

预期情节:

原始数据框(仅限前 10 行)

Mes,Clientes,Mercadorias,Quantidade
Janeiro,Cliente A,DOL,834984
Janeiro,Cliente A,WDO,622107
Janeiro,Cliente A,IND,576051
Janeiro,Cliente A,WIN,326315
Janeiro,Cliente A,DI1,762236
Janeiro,Cliente B,DOL,696233
Janeiro,Cliente B,WDO,635564
Janeiro,Cliente B,IND,265720
Janeiro,Cliente B,WIN,550040
Janeiro,Cliente B,DI1,354343

用于旋转数据框的代码:

df_2 = pd.pivot_table(df, index='Mes', columns='Clientes', aggfunc=sum)

透视数据框:

Quantidade,Quantidade,Quantidade,Quantidade,Quantidade
Cliente A,Cliente B,Cliente C,Cliente D,Cliente E
1799492,1779077,3278442,2307922,3037275
2434961,2153050,2433302,2537541,1991130
3121693,2501900,1902067,2899094,2395038
2526271,2922299,2719685,3352454,2756570
2918910,3806007,2114714,2302343,2077582

【问题讨论】:

  • df_2['Quantidade'].plot.bar()工作?
  • @TrentonMcKinney,感谢您的提醒!您是否建议任何其他方式来表示具有预期情节的屏幕截图?
  • @ScottBoston,它成功了,非常感谢!
  • 不,预期地块的图像很好。

标签: python pandas matplotlib bar-chart


【解决方案1】:

您需要对数据框进行切片,以便消除 MultiIndex 列标题的顶层,使用:

df_2['Quantidade'].plot.bar()

输出:

另一种选择是在 pivot_table 中使用 values 参数,以消除 MultiIndex 列标题的创建:

df_2 = pd.pivot_table(df, index='Mes', columns='Clientes', values='Quantidade', aggfunc=sum)

输出:

Clientes  Cliente A  Cliente B
Mes                           
Janeiro     3121693    2501900

【讨论】:

    【解决方案2】:

    这将是一个两步的过程。

    1. Unstack 你的数据框 - 按照这个例子 - Reshape wide to long in pandas

    2. 使用 matplotlib 绘制分组条形图 - 遵循此示例 - https://chrisalbon.com/python/data_visualization/matplotlib_grouped_bar_plot/

    Seaborn 绘图库example 中有一个简单的方法 - 您可以将第二列称为色调,这应该可以为您工作。

    【讨论】:

      【解决方案3】:

      看起来你用了df.pivot(),所以你基本上可以做到df.plot(kind='bar')

      【讨论】:

        猜你喜欢
        • 2019-11-11
        • 2020-01-07
        • 1970-01-01
        • 1970-01-01
        • 2019-09-05
        • 1970-01-01
        • 1970-01-01
        • 2018-05-23
        • 1970-01-01
        相关资源
        最近更新 更多