我有一个包含变更请求 (CR)、系统、所有者和评估(示例)的数据框
CR |system | owner | assessment
A1 |Alpha | Alice | good
A2 |Alpha | Alice | good
A3 |Alpha | Alice | bad
B2 |Bravo | Bob | bad
B3 |Bravo | Bob | good
B4 |Bravo | Bob | bad
我正在尝试创建评估最差的前 3 个系统的 matplotlib 图,但在 pyplot 中显示具有好值和坏值的堆积条形图。
这段代码(CR已被删除)给了我正确的图形,但计数是错误的,因为它分别计数好和坏。
table = df.groupby(['system','owner']).assessment.value_counts().nlargest(3)
chart = table.plot.barh(stacked=True, color= ['red','green'], fontsize=12)
表格看起来像(实际摘录):
system owner assessment
ALPHA Alice good 75
bad 60
BRAVO Bob bad 57
我已经尝试了多种语句来提取前 3 个最差的系统,并显示一个图表,该图表在水平堆叠条上显示好值和坏值,但我似乎无法同时执行这两项操作。
如何对“坏”数字(60 和 57)进行排序,但在同一个堆叠条上显示好(75)和坏(60)?如何显示前 3 个最差的系统(最差的值)?
所以我寻找的堆叠条结果如下所示:
Alpha BBBBBBBBBGGGGGGGGG
Bravo BBBBBBBBBBBBBB
Charlie BBBGGGGGGGG
最佳答案
这解决了我的问题:
print(df.groupby(['system','owner']).Evaluation.value_counts().unstack(level=-1).nlargest(3,columns='bad').stack())
关于python - 在数据帧中的好坏堆叠条上显示前 3 个 'bad' 系统(按一个值排序,但在图表上显示两个值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53521004/