Python 2.7 Python在多个列上分组并打印结果?
以下是我的数据集的外观:Python 2.7 Python在多个列上分组并打印结果?,python-2.7,pandas,matplotlib,plot,group-by,Python 2.7,Pandas,Matplotlib,Plot,Group By,以下是我的数据集的外观: Levels Role Status ABC SE Open XYZ SSE Closed KYZ LA Closed 在这里,我的要求是获得每个'Level'和状态为'Closed'的每个'role'的计数 我使用下面的代码来获得所需的结果 df[df['Status'] == 'Closed'].groupby(['Levels','Role']).size() 现在
Levels Role Status
ABC SE Open
XYZ SSE Closed
KYZ LA Closed
在这里,我的要求是获得每个'Level'和状态为'Closed'的每个'role'的计数
我使用下面的代码来获得所需的结果
df[df['Status'] == 'Closed'].groupby(['Levels','Role']).size()
现在我想画出这些结果。如何绘制这些结果。这需要是一个不言自明的解释。什么样的情节最适合我的要求
我不熟悉可视化部分
谢谢如果你不知道如何可视化结果,其他人怎么知道呢。但某种通用的方法是创建一个透视表,其中一个可以使用一个类别作为列,另一个作为索引,然后绘制一个条形图
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
levels=["ABC", "XYZ", "KYZ", "KYZ"]
roles = ["SE", "SSE", "LA", "SSE"]
status = ["Open", "Closed", "Closed", "Closed"]
df=pd.DataFrame({"Levels" : levels, "Role":roles, "Status":status})
df2 = df[df['Status'] == 'Closed'].groupby(['Levels','Role']).size().reset_index(name='Count')
df3 = pd.pivot_table(df2, values='Count', columns=['Levels'], index = "Role",
aggfunc=np.sum, fill_value=0)
df3.plot(kind="bar")
plt.show()
我道歉。我的意思是,哪种方法更能形象化这种结果,这样就更容易解释了。谢谢它看起来对我很好。有一件事,我的level列中有50多个值,因为它是重叠的。有没有办法处理这个问题。什么是重叠?如果是关于图例,减小字体大小和/或增加图形大小可能会有所帮助。若角色具有较少的可能条目,则还可以交换级别和角色。不同类型的情节可能也更适合,但同样,你需要一个最终情节应该是什么样子的粗略想法,否则我们在这里挖黑暗。谢谢。按照我的要求,这种情节似乎不错。我已经添加了这一行“plt.legend(bbox_to_anchor=(0,1.02,1,1.108),loc=3,ncol=8,borderaxespad=0.3)”。图例现在可以阅读了。唯一的问题是条形图的颜色不易区分。不管怎样,再次感谢。虽然人类大脑通常擅长区分颜色之间的相对关系,但在识别绝对颜色方面却相当糟糕。但这是可视化中的一个普遍问题,在这里无法解决。