實(shí)例3:從Excel薪資總表中自動(dòng)分拆成各部門(mén)的表并保存

image.png
import pandas as pd
df = pd.read_excel("data\salary_info.xlsx")
df.head()
image

首先導(dǎo)入pandas庫(kù)。Pandas是一個(gè)用于數(shù)據(jù)分析的功能非常強(qiáng)大的python包,是數(shù)據(jù)分析的必學(xué)必備工具。這些了解一下即可,總之它們就是一個(gè)工具,能為我所用,能解決問(wèn)題行,無(wú)需深入了解,只需要了解我們要使用的部分就行了。

為方便后續(xù)代碼的書(shū)寫(xiě),慣常做法是給導(dǎo)入的庫(kù)起個(gè)“綽號(hào)”,比如import pandas as pd的意思是導(dǎo)入pandas庫(kù),并取綽號(hào)為"pd",這樣在后續(xù)的程序中直接用pd就可以代表pandas。

然后我們使用pd.read_excel讀取Excel文件,可直接將Excel文件讀取為一個(gè)數(shù)據(jù)框(DataFrame)??梢岳斫鈹?shù)據(jù)框就是一張Excel表,請(qǐng)看上圖,是不是很像我們常用的Excel表格呢?我們用df.head()看一下它的前5行,以便觀察是否有正確讀取。看起來(lái)是一切正常的。

下面我們就按不同的經(jīng)理來(lái)將這些數(shù)據(jù)拆分成不同的表格并單獨(dú)保存,以便通過(guò)郵件的方式發(fā)給對(duì)應(yīng)的經(jīng)理。當(dāng)然也可以按部門(mén)來(lái)拆分,原理是類(lèi)似的??偙砑安鸱趾蟮谋砣缦聢D所示??梢?jiàn)拆分操作在不到1秒之內(nèi)就全部完成了,堪稱神速....

image
#拆分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)理”的列,然后每個(gè)經(jīng)理只取一次名字,然后存入manager這個(gè)數(shù)組。

managers
>>array(['李飛', '劉曉麗', '張春香', '李國(guó)際', '王明', '朱柳峰'], dtype=object)

然后我們將經(jīng)理的名字逐個(gè)傳入數(shù)據(jù)表,并逐個(gè)保存成新的Excel文件。df.to_excel()可實(shí)現(xiàn)將數(shù)據(jù)框存儲(chǔ)為Excel文件。括號(hào)內(nèi)的參數(shù)為需要存入的路徑和文件名,此處我們希望把經(jīng)理的名字放在文件名里面以便區(qū)分,所以使用格式化字符串函數(shù).format將經(jīng)理的名字傳入文件名。我們不想在Excel中顯示數(shù)據(jù)框的索引,因此index設(shè)為False。分拆后的Excel表如下圖所示,分拆成功。

image

對(duì)于格式化字符串函數(shù).format,可通過(guò)如下例子理解。即我們?cè)谇懊孀址蟹乓粋€(gè)"{}",然后format()括號(hào)內(nèi)的“”就是要放入"{}"中的值。

print("你好,{}!".format("世界"))
>>你好,世界!

所有源代碼和說(shuō)明都在Jupyter notebook上完成,所用到的Excel 資料已上傳GitHub, 歡迎Fork或下載到本地隨意玩。。。轉(zhuǎn)載請(qǐng)注明出處,謝謝。
GitHub鏈接:https://github.com/weidylan/Office_Automation_by_Using_Python
微信公眾號(hào):Python操作Office軟件高效工作

image
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • pyspark.sql模塊 模塊上下文 Spark SQL和DataFrames的重要類(lèi): pyspark.sql...
    mpro閱讀 9,915評(píng)論 0 13
  • Series(一維數(shù)據(jù)) import numpy as npimport pandas as pdp = pri...
    A雪_辰A閱讀 806評(píng)論 0 1
  • Anaconda NumPy pandas 將pandas的DataFrame數(shù)據(jù)寫(xiě)入MySQL數(shù)據(jù)庫(kù) + sql...
    莫名ypc閱讀 1,106評(píng)論 0 1
  • 這個(gè)學(xué)期起初的時(shí)候?qū)σ恍〇|西有所了解過(guò),就跳過(guò)很多東西吧,把一些自己認(rèn)為重要的做出筆記,看了昨天的那東西,截圖搞得...
    六六的建斌閱讀 1,220評(píng)論 0 1
  • ORA-00001: 違反唯一約束條件 (.) 錯(cuò)誤說(shuō)明:當(dāng)在唯一索引所對(duì)應(yīng)的列上鍵入重復(fù)值時(shí),會(huì)觸發(fā)此異常。 O...
    我想起個(gè)好名字閱讀 5,963評(píng)論 0 9

友情鏈接更多精彩內(nèi)容