|
公司人事部的妹子經(jīng)常需要給各部門經(jīng)理提供其部門人員的情況,比如薪資、背景等。這些信息都是保密的,只能讓部門經(jīng)理知道,因此是不可能將總表發(fā)給他們,讓他們自己篩選查看的。通常的做法就是在Excel中建個數(shù)據(jù)透視表,然后按不同經(jīng)理或部門逐個篩選,復(fù)制粘貼到新的Excel文件中,分別發(fā)給各部門經(jīng)理。這個純體力活,讓程序去干就好了 。 下面我們就來將公司的薪資按部門匯總,并自動生成各部門的Excel文件。代碼總共只需要5行,非常簡單高效。 import pandas as pd df = pd.read_excel('data\salary_info.xlsx') df.head()
| 工號 | 姓名 | 部門 | 薪資 | 經(jīng)理 |
|
|---|
| 0 | 701001 | 王波 | 工程部 | 8900 | 李飛 |
|---|
| 1 | 701002 | 劉海洋 | 生產(chǎn)部 | 6000 | 劉曉麗 |
|---|
| 2 | 701003 | 少和光 | 品質(zhì)部 | 6000 | 張春香 |
|---|
| 3 | 701004 | 真凡巧 | 倉務(wù)部 | 4700 | 李國際 |
|---|
| 4 | 701005 | 魯鴻運(yùn) | 船務(wù)部 | 5500 | 王明 |
|---|
首先導(dǎo)入pandas庫。Pandas是一個用于數(shù)據(jù)分析的功能非常強(qiáng)大的python包,是數(shù)據(jù)分析的必學(xué)必備工具。這些了解一下即可,總之它們就是一個工具,能為我所用,能解決問題行,無需深入了解,只需要了解我們要使用的部分就行了。
為方便后續(xù)代碼的書寫,慣常做法是給導(dǎo)入的庫起個“綽號”,比如import pandas as pd的意思是導(dǎo)入pandas庫,并取綽號為'pd',這樣在后續(xù)的程序中直接用pd就可以代表pandas。 然后我們使用pd.read_excel讀取Excel文件,可直接將Excel文件讀取為一個數(shù)據(jù)框(DataFrame)??梢岳斫鈹?shù)據(jù)框就是一張Excel表,請看上圖,是不是很像我們常用的Excel表格呢?我們用df.head()看一下它的前5行,以便觀察是否有正確讀取??雌饋硎且磺姓5?。 下面我們就按不同的經(jīng)理來將這些數(shù)據(jù)拆分成不同的表格并單獨(dú)保存,以便通過郵件的方式發(fā)給對應(yīng)的經(jīng)理。當(dāng)然也可以按部門來拆分,原理是類似的。總表及拆分后的表如下圖所示。可見拆分操作在不到1秒之內(nèi)就全部完成了,堪稱神速.... 
#拆分Excel表,并單獨(dú)保存 managers=df['經(jīng)理'].unique() for manager in managers: df[df['經(jīng)理']==manager].to_excel('data\salary_info_{}.xlsx'.format(manager),index=False) print('完成!')
因?yàn)樵诳偙碇?,?jīng)理的名下有很多員工,因此經(jīng)理的名字是重復(fù)的,我們只需要獲得所有經(jīng)理的名字一次就夠了,unique()就可以實(shí)現(xiàn)。df['經(jīng)理'].unique()可以理解為,從工作表中選取列名為“經(jīng)理”的列,然后每個經(jīng)理只取一次名字,然后存入manager這個數(shù)組。 managers >>array(['李飛', '劉曉麗', '張春香', '李國際', '王明', '朱柳峰'], dtype=object)
然后我們將經(jīng)理的名字逐個傳入數(shù)據(jù)表,并逐個保存成新的Excel文件。df.to_excel()可實(shí)現(xiàn)將數(shù)據(jù)框存儲為Excel文件。括號內(nèi)的參數(shù)為需要存入的路徑和文件名,此處我們希望把經(jīng)理的名字放在文件名里面以便區(qū)分,所以使用格式化字符串函數(shù).format將經(jīng)理的名字傳入文件名。我們不想在Excel中顯示數(shù)據(jù)框的索引,因此index設(shè)為False。分拆后的Excel表如下圖所示,分拆成功。 
對于格式化字符串函數(shù).format,可通過如下例子理解。即我們在前面字符串中放一個'{}',然后format()括號內(nèi)的“”就是要放入'{}'中的值。 print('你好,{}!'.format('世界')) >>你好,世界!
所有源代碼和說明都在Jupyter notebook上完成,所用到的Excel 資料已上傳GitHub, 歡迎Fork或下載到本地隨意玩。。。轉(zhuǎn)載請注明出處,謝謝。 GitHub鏈接: https://github.com/weidylan/Office_Automation_by_Using_Python
|