2017-10-10 79 views
0

我正在使用一箇中等大小的數據集,我有三個欄目,部門名稱,電子郵件和完成如何基於組計數?

我的最終目標是用熊貓來繪製這些數據,所以即時嘗試找出可能的最佳方式

我已經使用數據透視表完成了這項工作,但我需要計算兩個包含部門名稱的內容。首先是該部門內的員工和2有多少人完成了部門內部的培訓(當時我打算做一個條形圖與此數據)

例如數

Finance [email protected] Complete 
IT [email protected] 
IT [email protected] Complete 
IT [email protected] Complete 
Accounting [email protected] 
Accounting [email protected] Complete 
Accounting [email protected] Complete 

所以對於IT輸出將有3名員工和2完成培訓

我想知道有多少人在IT和有多少人完成它在IT,金融,會計等。

有沒有簡單的方法來做到這一點?

+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 

的想法是大小返回組的大小,而count返回計數nonNaN值。

要創建barplot,你可以簡單地使用熊貓圖()

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') 
+0

我可以在網頁上發佈這個嗎? – davidjbeiler

+0

是的,這是一個非常標準的解決方案 – Vaishali

+0

你將如何從csv分配變量?我有這個:df = pd.read_excel('C:\\ Users \\ dbeiler \\ Desktop \\ F5 \\ PythonApplication1 \\ PythonApplication1 \\ SANS.xlsx',data = ['Department','Email','完成']) – davidjbeiler

1

您正在尋找這樣的事情?

department = ['Finance', 'IT', 'IT', 'IT', 'Accounting', 'Accounting', 'Accounting'] 
status = ['Complete', 'Incomplete', 'Complete', 'Complete', 'Incomplete', 'Complete','Complete'] 
email = ['[email protected]', 
     '[email protected]', 
     '[email protected]', 
     '[email protected]', 
     '[email protected]', 
     '[email protected]', 
     '[email protected]'] 

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 
+0

這是全部來自csv,任何簡單的方法來做到這一點,如果頂部行說部門,電子郵件地址和完成? – davidjbeiler

+0

是的,而不是'Dep'和'Status'使用'Department'和'Completion'。也請接受爲你工作的答案。 – rko

+0

生病im必須明天嘗試 – davidjbeiler