实例3:从Excel薪资总表中自动分拆成各部门的表并保存

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

首先导入pandas库。Pandas是一个用于数据分析的功能非常强大的python包,是数据分析的必学必备工具。这些了解一下即可,总之它们就是一个工具,能为我所用,能解决问题行,无需深入了解,只需要了解我们要使用的部分就行了。

为方便后续代码的书写,惯常做法是给导入的库起个“绰号”,比如import pandas as pd的意思是导入pandas库,并取绰号为"pd",这样在后续的程序中直接用pd就可以代表pandas。

然后我们使用pd.read_excel读取Excel文件,可直接将Excel文件读取为一个数据框(DataFrame)。可以理解数据框就是一张Excel表,请看上图,是不是很像我们常用的Excel表格呢?我们用df.head()看一下它的前5行,以便观察是否有正确读取。看起来是一切正常的。

下面我们就按不同的经理来将这些数据拆分成不同的表格并单独保存,以便通过邮件的方式发给对应的经理。当然也可以按部门来拆分,原理是类似的。总表及拆分后的表如下图所示。可见拆分操作在不到1秒之内就全部完成了,堪称神速....

image
#拆分Excel表,并单独保存
managers=df["经理"].unique()
for manager in managers:
    df[df["经理"]==manager].to_excel("data\salary_info_{}.xlsx".format(manager),index=False)
print("完成!")

因为在总表中,经理的名下有很多员工,因此经理的名字是重复的,我们只需要获得所有经理的名字一次就够了,unique()就可以实现。df["经理"].unique()可以理解为,从工作表中选取列名为“经理”的列,然后每个经理只取一次名字,然后存入manager这个数组。

managers
>>array(['李飞', '刘晓丽', '张春香', '李国际', '王明', '朱柳峰'], dtype=object)

然后我们将经理的名字逐个传入数据表,并逐个保存成新的Excel文件。df.to_excel()可实现将数据框存储为Excel文件。括号内的参数为需要存入的路径和文件名,此处我们希望把经理的名字放在文件名里面以便区分,所以使用格式化字符串函数.format将经理的名字传入文件名。我们不想在Excel中显示数据框的索引,因此index设为False。分拆后的Excel表如下图所示,分拆成功。

image

对于格式化字符串函数.format,可通过如下例子理解。即我们在前面字符串中放一个"{}",然后format()括号内的“”就是要放入"{}"中的值。

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

所有源代码和说明都在Jupyter notebook上完成,所用到的Excel 资料已上传GitHub, 欢迎Fork或下载到本地随意玩。。。转载请注明出处,谢谢。
GitHub链接:https://github.com/weidylan/Office_Automation_by_Using_Python
微信公众号:Python操作Office软件高效工作

image

你可能感兴趣的:(实例3:从Excel薪资总表中自动分拆成各部门的表并保存)