python数据分析文件夹篇--pandas,openpyxl,xlwings三种方法批量创建、 复制、删除工作表
前言
之前我们学习了使用pandas灵活地读取数据,包括读取工作簿中一个或几个工作表,读取工作表中一行或多行,一列或多列数据,还学习了如何将数据灵活保存到本地。
今天我们学习一下文件夹中文件的批量处理操作,包括批量生成表格,复制表格,设置路径等等一系列操作。
一、批量创建工作表
我们这边先在E盘创建一个空白的文件夹
1.pandas批量生成表格
接着在pycharm中输入以下的代码:
import pandas as pd
for i in range(1,4):
df=pd.DataFrame()
df.to_excel(rf"E:\Python文件夹篇\new{i}.xlsx")
我们来分析一下代码
第一行:我们导入pandas库
第二行:我们使用rang函数,这个函数会依次生成从最小值到最大值中间的数,比如我们的range(1,4),它会生成1,2,3这三个数,也就是说包括最小值,不包括最大值
第三行和第四行:range函数每生成一个数,就执行一次操作,一次操作包括创建一个新的表格,然后把表格保存到E盘Python文件夹篇这个文件夹里面,同时新创建的表格的名字叫做new{i}.xlsx,这里的i是一个变量,它的值就是range函数生成的值
比如第一次range函数生成第一个数字1,那么就会执行一次操作生成一个叫做new1.xlsx的表格
我们运行上面的代码后,结果如下:
可以看到,在之前空白的文件夹多了new1,new2,new3这三个表
2.xlwings批量生成表格
我们在pycharm输入下面的代码;
import xlwings as xw
app=xw.App(visible=False,add_book=False)
for i in range(4,7):
wb=app.books.add()
wb.save(rf"E:\Python文件夹篇\new{i}.xlsx")
wb.close()
app.quit()
点击运行后结果如下:
可以看到我们在上面的new1,new2,new3的基础上,又生成了new4,new5,new6这三个工作表
鉴于现在还没有讲xlwings库的使用方法,所以这里就不一一解释每一行代码的意思了
大家只需要知道pandas,xlwings,openpyxl这三个库都有自己最擅长的领域,同时这三个库都可以批量创建空白表格就行
3.openpyxl批量生成表格
from openpyxl import Workbook
for i in range(7,10):
wb=Workbook()
wb.save(rf"E:\Python文件夹篇\new{i}.xlsx")
我们输入下面的代码然后点击运行
这样我们又生成了三个新的表格,new7,new8,new9
openpyxl的代码和pandas的代码几乎一样,只是生成表格的方法不一样而已
因此在这里也不多赘述
二、将一个工作表复制到另一个工作表中
现在我们在python数据分析这个文件夹新增两个表格,一个表格叫做华东,另一个表格叫做订单表,如下
其中,订单表的内容如下:
里面只有一个sheet1
华东的内容如下:
这里面有九个工作表
现在我们需要做的就是把华东这个工作簿中的“上海”这个工作表复制到订单表这个工作簿中
1.xlwings库复制单个工作表
我们在pycharm中输入下面的代码
import xlwings as xw
app=xw.App(visible=False,add_book=False)
filename1=r"E:\Python文件夹篇\华东.xlsx"
filename2=r"E:\Python文件夹篇\订单表.xlsx"
wb1=app.books.open(filename1)
wb2=app.books.open(filename2)
ws1=wb1.sheets["上海"]
ws2=wb2.sheets[0]
ws1.copy(before=ws2)
wb2.save(r"E:\Python文件夹篇\新订单表.xlsx")
wb1.close()
wb2.close()
点击运行后,结果如下:
我们会得到一个新的表格:新订单表.xlsx
打开表格后,内容如下:
这样一来我们就成功将华东.xlsx这个工作簿中的“上海”这个工作表进行复制了
2.xlwings库复制多个工作表
那么问题来了,上面我们讲了如何复制华东工作簿中的一个工作表,那如果要复制多个工作表呢?
比如我们想把华东这个工作簿中的九个工作表都复制到订单表中,怎么做呢?
我们输入以下代码:
import xlwings as xw
app=xw.App(visible=False,add_book=False)
filename1=r"E:\Python文件夹篇\华东.xlsx"
filename2=r"E:\Python文件夹篇\订单表.xlsx"
wb1=app.books.open(filename1)
wb2=app.books.open(filename2)
ws1=wb1.sheets
ws2=wb2.sheets[0]
for s in ws1:
s.copy(after=ws2)
wb2.save(r"E:\Python文件夹篇\新订单表111.xlsx")
wb1.close()
wb2.close()
点击运行后,我们可以看到文件夹中多了一个表格:新订单表111.xlsx
打开表格,内容如下:
可以看到新工作表中成功复制进了华东.xlsx这个工作簿中全部的九个工作表
3.openpyxl库复制工作表
我们在pycharm中输入下面代码;
import openpyxl
wb1=openpyxl.load_workbook(r"E:\Python文件夹篇\华东.xlsx")
wb2=openpyxl.load_workbook(r"E:\Python文件夹篇\订单表.xlsx")
ws1=wb1["上海"]
ws2=wb2.create_sheet()
ws2.title="复制的表格_上海"
for i in range(1,ws1.max_row+1):
for j in range(1,ws1.max_column+1):
ws2.cell(row=i,column=j).value=ws1.cell(row=i,column=j).value
wb2.save(r"E:\Python文件夹篇\新订单表222.xlsx")
点击运行后,会生成一个新的工作表:新订单表222.xlsx
打开新订单表222.xlsx,内容如下:
可以看到我们成功复制表格,并且将复制的表格命名为了:复制的表格_上海
那么如何使用openpyxl来复制多个工作表呢?
聪明的小伙伴们,这个问题就留给大家去思考了。
相信认真阅读了这篇文章的朋友一定可以相出办法的。
总结
今天我们学习了如何使用pandas,openpyxl和xlwings这三个库批量地生成和复制表格,收获满满。
后续会继续更新python数据分析的其它内容,包括如何合并多个表格,如何拆分表格等等。
感兴趣的朋友可以点个赞和关注哟!!!!!