如何根据群体进行统计?

时间:2017-10-10 23:23:59

标签: python pandas csv

我正在使用中型数据集,我有三列,部门名称,电子邮件和完成

我的最终目标是用大熊猫绘制这些数据,所以我试图找出最好的方法

我使用数据透视表完成了这项工作,但我需要计算两个包含部门名称的内容。首先是该部门内的员工人数,以及该部门内有多少人完成培训(然后我打算用这些数据做一个条形图)

例如

Finance email6@domain.com Complete
IT  email1@domain.com   
IT  email2@domain.com Complete
IT  email3@domain.com Complete
Accounting  email4@domain.com   
Accounting  email5@domain.com    Complete
Accounting  email6@domain.com    Complete

所以IT的输出将有3名员工,2名完成培训

我想知道IT中有多少人,有多少人在IT,财务,会计等方面完成了这项工作。

有一种简单的方法吗?

2 个答案:

答案 0 :(得分:1)

您可以将groupby与聚合

一起使用
df.groupby('department name').completion.agg({'Total_Employees':'size', 'Completed_training':'count'})

                Total_Employees Completed_training
department name     
Accounting      3               2
Finance         1               1
IT              3               2

作为size的想法返回组的大小,而count返回nonNaN值的计数。

要创建条形图,您只需使用pandas plot()

即可
df.groupby('department name').completion.agg({'Total_Employees':'size', 'Completed_training':'count'}).plot(kind = 'bar')

编辑:

鉴于列名['部门','电子邮件','完成'],代码将

df.groupby('Department').Completion.agg({'Total_Employees':'size', 'Completed_training':'count'}).plot(kind = 'bar')

答案 1 :(得分:1)

你在找这样的东西吗?

department = ['Finance', 'IT', 'IT', 'IT', 'Accounting', 'Accounting', 'Accounting']
status = ['Complete', 'Incomplete', 'Complete', 'Complete', 'Incomplete', 'Complete','Complete']
email = ['email6@domain.com', 
         'email1@domain.com',
         'email2@domain.com',
         'email3@domain.com',
         'email4@domain.com',
         'email5@domain.com',
         'email6@domain.com']

df101 = pd.DataFrame({'Dep' : department, 'Email': email, 'Status': status})
grouped = df101.groupby(['Dep', 'Status']).count().fillna(0)

# output
                      Email
Dep         Status  
Accounting  Complete    2
            Incomplete  1
Finance     Complete    1
IT          Complete    2
            Incomplete  1


grouped.unstack().plot.bar(stacked = True)
#output