首页 > 解决方案 > 如何创建堆叠条形图,每列仅显示前 N 行(值)

问题描述

我是 Python 的新手,正在研究这个项目,寻找一家 IT 公司赢得的交易。对于下面的数据,我想创建一个 堆积条形图,仅显示每个“客户类别”的前 5 个“VP-Manager”值,即每个“客户类别”赢得最多交易的前 5 个“VP-Manager” '。

[数据样本][1]:https ://i.stack.imgur.com/f9sdG.png

我从@Jon Clements 对以下问题的回复中获得了指导: 创建数据框中每行 N 个最大列的堆叠条形图

这是我的代码:

top5 = (
    # bring the client category back as a column to use as a grouping var
    dataw.reset_index()
    # make a long DF of client category/column/name value
    .melt(id_vars='Client Category')
    # order DF by highest values first
    .sort_values('VP-Manager', ascending=False)
    # group by the index and take the first 5 rows of each
    .groupby('Client Category')
    .head(5)
    # pivot back so we've got an X & Y to chart...
    .pivot('Client Category', 'VP-Manager')
    # drop the value level as we don't need that
    .droplevel(level=0, axis=1)
)

top5.plot.bar(stacked=True)

但我不断收到错误 KeyError: 'VP-Manager'

尝试了各种方法(以及其他几种方法),但似乎无法解决这个问题。

请问有人可以帮忙吗?谢谢!

更新:我正在寻找与此类似的图表 - [期望输出][2]:https ://i.stack.imgur.com/yb6Xl.jpg

标签: pythonstacked-charttop-n

解决方案


推荐阅读