1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 如何使用python效率办公_日常office工作中如何用python提升效率014

如何使用python效率办公_日常office工作中如何用python提升效率014

时间:2023-03-08 19:47:48

相关推荐

如何使用python效率办公_日常office工作中如何用python提升效率014

今天讲一下:

如何将数据分析结果存放于同一Excel文件中的不同Sheet页

先回顾一下:

学习笔记的第一篇,就讲过了如何利用Pandas的read_excel和to_excel方法从excel文件中读取数据和写Excel文件,其中讲到写Excel时,我们只写了一张表,因为如果使用to_excel(文件名)这种方法,第二次写文件时会直接覆盖上一次写的结果,那就永远只有最后一次写入的那张表。

今天本来是想讲一下openpyxl模块的,但后来发现pandas的to_excel方法其实也能写多个sheet页,所以我先看这个方法:

1、需要用到模块

pandas datetime

先引入这两个武器:

import pandas as pd

import datetime as dt

2、准备工作:

我们使用上篇那个test009.xlsx文件,不再另外准备数据表了。

3、先导入费用表和部门信息表

bf = pd.read_excel("d:\\data\\test009.xlsx",sheet_name="费用")

bm = pd.read_excel("d:\\data\\test009.xlsx",sheet_name="部门")

4、组合两张表数据:

df = pd.merge(bf,bm,left_on="工号",right_on="employee ID")

5、今天的任务是把组合后的数据中“工号”、“姓名”、“报销日期”、“费用类型”、“报销金额”、“部门”等列的数据,按9月和10月时间过滤,分别存入一个excel表中的两个sheet页,sheet页名分别为"Sep"和"Oct"

6、先把数据过滤出来:

df09 = df[["工号","姓名_x","报销日期","费用类型","报销金额","部门"]].where(df["报销日期"] < dt.datetime(,10,1))

df10 = df[["工号","姓名_x","报销日期","费用类型","报销金额","部门"]].where(df["报销日期"] >= dt.datetime(,10,1))

上面语句中,dt.datetime(,10,1)方法用于“构造”一个datetime标准时间,它的值为“-10-01 00:00:00 000000",报销日期小于它的数据则是9月份的报销记录,报销日期大于等于它的,则是10月份的报销记录。两条命令运行后的结果如下:

我们可以发现两个结果中都存在许多缺失值的数据行,这是因为我们使用where方法对原数据集df进行过滤时,它会每行去进行匹配筛选,如符合,则取原值,如不符合,则设为缺失值,因此,在存入excel文件之前,我们还需要使用dropna方法把缺失值的数据行都删除:

df09 = df09.dropna()

df10 = df10.dropna()

7、将df09和df10数据写入excel文件:

writer = pd.ExcelWriter('d:\\data\\test010.xlsx')

df09.to_excel(writer, sheet_name="Sep",index=False)

df10.to_excel(writer, sheet_name="Oct",index=False)

writer.save()

writer.close()

结果如下:

上面主要是使用ExcelWriter方法,在内存中先创建了一个Excelbook的writer对象,然后在内存中对其进行操作,无论你写多少张sheet页,在save前,都不会影响实际的文件内容,因此,写完所有数据后,还需要使用save方法保存到文件中,并将writer对象关闭。

今天就先总结到这儿,如果大家有什么问题,可在公众号后台给我留言,在我能力圈内的,尽快给大家回复。

下篇预告:

讲一下pandas中另一种数据透视表方法

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。