在多列上分组时如何绘制条形图?

Posted

技术标签:

【中文标题】在多列上分组时如何绘制条形图?【英文标题】:How to plot a Bar graph when grouping on multiple columns? 【发布时间】:2019-08-16 11:31:19 【问题描述】:

按日期分组数据:

grouped = tickets.groupby(['date'])
size = grouped.size()
size

然后使用:

size.plot(kind='bar')

结果:

但是,我需要按日期对数据进行分组,然后对 modeofcommunication 进行分组,最后绘制每个子组的计数。

grouped = df.groupby([‘date’,’modeofcommunication'])
size = grouped.size()
size

结果如下:

date                modeofcommunication
2019-03-15          Chat                       2
                    Internal Email             2
                    Phone                      4

2019-03-16          Chat                      25
                    Email                     20
                    Feedback Form              2
                    Phone                      6

2019-03-17          Chat                      23
                    Email                     68
                    Feedback Form             13
                    Internal Email             3


2019-03-18          Chat                    1822
                    Email                     57
                    Facebook                  14
                    Feedback Form             11
                    Internal Email            11
                    Phone                    812
                    Twitter                    4

如何为分组数据绘制条形图,以便每个子组(通信模式)的计数表示为父组下的垂直条?

【问题讨论】:

【参考方案1】:

我相信你需要 Series.unstackDataFrameMultiIndex Series 然后 DataFrame.plot.bar:

size.unstack().plot.bar()

或者:

size.unstack().plot.bar(stacked=True)

【讨论】:

谢谢@jezraeil。这两种解决方案都运行良好,正是我想要的。

以上是关于在多列上分组时如何绘制条形图?的主要内容,如果未能解决你的问题,请参考以下文章

Pandas 在单个条形图上绘制多列 [重复]

如何从两个或多个数据框中绘制分组条形图

如何以正确的顺序绘制分组条形图

如何分组聚合最小值/最大值并绘制分组条形图

为多列绘制多个条形图

Python使用matplotlib绘制柱状图(bar plot)实战:水平条形图垂直条形图分组条形图堆叠条形图