Python在多列上分组并绘制结果?

时间:2017-02-19 19:04:14

标签: python-2.7 pandas matplotlib plot group-by

以下是我的数据集的样子:

Levels     Role     Status
ABC        SE       Open 
XYZ        SSE      Closed 
KYZ        LA       Closed

此处我的要求是获取每个'级别'的计数以及每个'角色',其中状态为'已关闭'

我使用下面的代码来获取所需的结果。

df[df['Status'] == 'Closed'].groupby(['Levels','Role']).size()

现在我想绘制这些结果。我如何绘制这些结果。它需要成为一个自我解释。什么样的情节最适合我的要求。

我是可视化部分的新手。

由于

1 个答案:

答案 0 :(得分:1)

如果您不知道如何将结果可视化,那么其他人应该如何知道。但是某种通用方法可以创建一个数据透视表,可以使用其中一个类别作为列,另一个作为索引,然后绘制条形图。

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()

enter image description here