首页 > 解决方案 > Python:基于同一 DF 内多列值的堆积条形图

问题描述

假设我们有一个像下面这样的 DF:

channel     store         product  orders
offline     Swindon       webcam   97
offline     Kettering     webcam   28
offline     Swindon       ebook    55
offline     Kettering     ebook    77
offline     Swindon       tablet   122
offline     Kettering     tablet   81
online      Swindon       webcam   252
online      Kettering     webcam   111
online      Swindon       ebook    81
online      Kettering     ebook    244
online      Swindon       tablet   361
online      Kettering     tablet   49

我的目标是得到一个带有 4 个堆叠条的图(每个商店和可用的渠道组合一个),显示每个产品在每个产品中代表的销售百分比。

标签: pythonpandasmatplotlibplotlyseaborn

解决方案


最简单的方法是首先创建一个数据透视表,然后绘制它:

df.pivot_table(index=["channel", "store"], columns='product', values='orders', aggfunc='sum').plot(kind='bar', stacked=True)

在此处输入图像描述

事实上,你甚至不需要 a pivot_table,因为不需要对数据进行任何计算,所以你可以像这样重新排序表:

df.pivot(index=["channel", "store"], columns='product', values='orders').plot(kind='bar', stacked=True)

并会收到相同的结果。


推荐阅读