🤵♂️ 个人主页:@艾派森的个人主页
✍🏻作者简介:Python学习者
🐋 希望大家多多支持,我们一起进步!😄
如果文章对你有帮助的话,
欢迎评论 💬点赞👍🏻 收藏 📂加关注+
目录
Python处理Excel的好处
开源库支持:Python 有许多开源库(例如 openpyxl、xlrd、xlwt、pandas 等)可以用于读取、写入和操作 Excel 文件,这些库丰富而强大,支持各种 Excel 格式,包括 .xls 和 .xlsx。
数据处理能力:Python 具有强大的数据处理能力,可以轻松地从 Excel 文件中提取、转换和操作数据,包括数据清洗、筛选、合并、计算和可视化。
自动化:Python 可以用于自动化 Excel 任务,例如批量处理多个 Excel 文件,根据特定条件过滤和修改数据,自动生成报告和图表,以及自动发送电子邮件等。
与其他库集成:Python 可以与其他数据处理和分析库(如 NumPy、pandas、Matplotlib 等)无缝集成,使您能够在 Excel 数据上执行更复杂的分析和可视化。
跨平台性:Python 是跨平台的,可以在 Windows、Mac 和 Linux 等操作系统上运行,因此可以轻松地处理来自不同平台的 Excel 文件。
社区支持和文档:Python 社区非常庞大,有大量的文档、教程和示例代码可供学习和参考,帮助您解决与 Excel 处理相关的问题。
可扩展性:如果标准库中的功能不足以满足您的需求,您还可以使用其他第三方库来扩展 Python 的 Excel 处理功能,或者编写自定义脚本来执行特定的操作。
Python处理Excel主要有三大类库
openpyxl:
xlrd 和 xlwt:
pandas:
开发环境
操作系统:使用windows
Python版本:系统中需要安装Python3.8以上的版本
开发工具:选择 jupyter notebook
技术工具:
Python版本:3.9
代码编辑器:jupyter notebook
老板想要看去年每月领料数量大于1000的数据。手动筛选并复制粘贴出来,需要重复操作12次,实在太麻烦了,还是让Python来做吧。磨刀不误砍柴工,先整理一下思路:
1. 读取原表,将数量大于1000的数据所对应的行整行提取(如同在excel表中按数字筛选大于1000的)
2. 将提取的数据写入新的Excel表
- #1.获取满足条件的数据
- from openpyxl import load_workbook
- wb = load_workbook("每月物料表.xlsx")
- data = {} #储存所有工作表中满足条件的数据,以工作表名称为键
- sheet_names = wb.sheetnames
- for sheet_name in sheet_names:
- ws = wb[sheet_name]
- qty_list = []
- #获取G列的数据,并用enumrate给其对应的元素编号
- for row in range(2,ws.max_row+1):
- qty = ws['G'+str(row)].value
- qty_list.append(qty)
-
- qty_idx = list(enumerate(qty_list)) #用于编号
-
- #判断数据是否大于1000,然后返回大于1000的数据所对应的行数
- row_idx = [] #用于储存数量大于1000所对应的的行号
- for i in range(len(qty_idx)):
- if qty_idx[i][1] > 1000:
- row_idx.append(qty_idx[i][0]+2)
-
- #获取满足条件的数据
- data_morethan1K = []
- for i in row_idx:
- data_morethan1K.append(ws['A'+str(i)+":"+'I'+str(i)])
-
- data[sheet_name]=data_morethan1K
以上,我们把满足条件的12个月的数据提取并存入字典`data`,其键为对应的月份,比如“1月”,值就是满足条件的各行的数据。我们把“每月物料表”的G列对应的数据提取,存入列表`qty_list`,其中前10个数据是如下这样的。
qty_list[:10]
然后需要使用`enumerate`函数给这个列表的数据加上索引,以便在跟1000比大小的时候定位满足条件的那些数据的对应在Excel表中的行数。加上索引之后的列表是如下这样的,索引从0开始累加。
qty_idx[:10]
然后,再新建一个列表`row_idx`,用于储存“领料数量”大于1000的数据所对应的行号。此处用到`if`语句进行判断,只将“领料数量”大于1000的数据所对应的行号加上2存入列表。为什么要加2,是因为`range`函数是从0开始取的,然后工作表首行是字段名,第二行开始才是数据。如下结果显示了满足条件的数据对应的行数。
row_idx[:5]
然后新建列表`data_morethan1K`用于存储以上行号对应的整行数据。比如`ws['A1:I1']`就指第一行从A列到I列的所有单元格数据。最后将数据存入`data`字典中。数据结构如下所示。
data_morethan1K[1]
data['1月']
len(data['1月'])
data['1月'][0][0][1].value
数据提取完成后,就可以开始写入数据了。打开模板,按月从`data`字典中提取数据。并根据数据结构找到层级关系,将其中的各行的数据写入各单元格。写完之后,设置一下字号、边框即对齐方式,保存数据。到此收工!
- #2.写入获取的数据
- from openpyxl.styles import Border, Side, PatternFill, Font, GradientFill, Alignment
- thin = Side(border_style="thin", color="000000")#定义边框粗细及颜色
-
- wb = load_workbook("模板.xlsx")
- ws = wb.active
- for month in data.keys():
- ws_new = wb.copy_worksheet(ws) #复制模板中的工作表
- ws_new.title=month
- #将每个月的数据条数逐个取出并写入新的工作表
- for i in range(len(data[month])): #按数据行数计数,每行数据对应9列,所以每行需分别写入9个单元格
- ws_new.cell(row=i+2,column=1).value=data[month][i][0][0].value
- ws_new.cell(row=i+2,column=2).value=data[month][i][0][1].value
- ws_new.cell(row=i+2,column=3).value=data[month][i][0][2].value
- ws_new.cell(row=i+2,column=4).value=data[month][i][0][3].value.date()
- ws_new.cell(row=i+2,column=5).value=data[month][i][0][4].value
- ws_new.cell(row=i+2,column=6).value=data[month][i][0][5].value
- ws_new.cell(row=i+2,column=7).value=data[month][i][0][6].value
- ws_new.cell(row=i+2,column=8).value=data[month][i][0][7].value
- ws_new.cell(row=i+2,column=9).value=data[month][i][0][8].value
-
- #设置字号,对齐,缩小字体填充,加边框
- #Font(bold=True)可加粗字体
-
- for row_number in range(2, ws_new.max_row+1):
- for col_number in range(1,10):
- c = ws_new.cell(row=row_number,column=col_number)
- c.font = Font(size=10)
- c.border = Border(top=thin, left=thin, right=thin, bottom=thin)
- c.alignment = Alignment(horizontal="left", vertical="center",shrink_to_fit = True)
- wb.save("每月(大于1K).xlsx")
华丽的结果如下:
《ChatGPT进阶:提示工程入门》免费包邮送出3本!
内容简介:
《ChatGPT进阶:提示工程入门》是一本面向所有人的提示工程工具书,旨在帮助你掌握并有效利用以ChatGPT为代表的AI工具。学习完《ChatGPT进阶:提示工程入门》后,你将能够自如地将ChatGPT运用在生活和专业领域中,成为ChatGPT进阶玩家。
《ChatGPT进阶:提示工程入门》共分为9章,内容涵盖三个层次:介绍与解读、入门学习、进阶提升。第1~2章深入介绍与剖析了ChatGPT与提示工程,并从多个学科的角度探讨了提示工程学科。第3~5章演示了ChatGPT的实际运用,教你如何使用ChatGPT解决自然语言处理问题,并为你提供了一套可操作、可重复的提示设计框架,让你能够熟练驾驭ChatGPT。第6~9章讲解了来自学术界的提示工程方法,以及如何围绕ChatGPT进行创新;此外,为希望ChatGPT进行应用开发的读者提供了实用的参考资料,并介绍了除ChatGPT之外的其他选择。
《ChatGPT进阶:提示工程入门》聚焦ChatGPT的实际应用,可操作,可重复,轻松易读却不失深度。无论你是对ChatGPT及类似工具充满好奇,还是期待将其转化为生产力。编辑推荐:
系统:全面剖析ChatGPT应用技巧,带你从小白变身ChatGPT应用专家。
实用:内含开箱即用的“提示公式”,聚焦ChatGPT实际应用。
有思路,有办法,能落地:带你将ChatGPT真正转化为生产力,开启AI驱动的工作流程。
简单易读:深入浅出,循序渐进,内含60 个示例,适合初学者和进阶读者。
深度:理论结合实际,涵盖提示工程学科深度讨论,授人以鱼更授人以渔。
- 抽奖方式:评论区随机抽取3位小伙伴免费送出!
- 参与方式:关注博主、点赞、收藏、评论区评论“人生苦短,拒绝内卷!”(切记要点赞+收藏,否则抽奖无效,每个人最多评论三次!)
- 活动截止时间:2023-10-05 20:00:00
名单公布时间:2023-10-05 21:00:00