【办公自动化】在Excel中按条件筛选数据并存入新的表(文末送书)
🤵♂️ 个人主页:@艾派森的个人主页
✍🏻作者简介:Python学习者
🐋 希望大家多多支持,我们一起进步!😄
如果文章对你有帮助的话,
欢迎评论 💬点赞👍🏻 收藏 📂加关注+
目录
一、Python处理Excel
二、在Excel中按条件筛选数据并存入新的表
三、往期推荐
四、文末推荐与福利
一、Python处理Excel
-
Python处理Excel的好处
1.批量操作:当要处理众多Excel文件时,例如出现重复性的手工劳动,那么使用Python就可以实现批量扫描文件、自动化进行处理,利用代码代替手工重复劳动,实现自动化,是Python第一个比Excel强大的地方
2.大型文件,当Excel文件超过几十兆、甚至上百兆时,打开文件很慢、处理文件更加慢,这时候若使用Python,会发现处理几十兆、几百兆甚至几GB都是没有问题的
3.当使用Excel进行复杂的计算时,会使用VBA,但是VBA本身是过时并且复杂的语言,Python是当前最简单且容易实现的一门语言,用Python能够处理比VBA难度更高的业务逻辑
4.Python是通用语言,不仅可以处理Excel,使用Python就可以得到很多额外的功能,例如:爬虫、发布网页的Web服务、与数据库进行连接、同时结合word和PPT进行处理、加入定时任务处理、人工智能分析等,各种额外的功能,这是Excel和VBA所不具备的
-
Python处理Excel主要有三大类库
1.pandas:是Python领域非常重要的,用于数据分析和可视化的类库,在处理Excel中,90%可以利用pandas类库就可以搞掂,利用pandas就可以读取Excel、处理Excel和输出Excel,但是pandas也有缺点,就是无法做到格式类,例如Excel中合并单元、大量复杂的样式(看起来很精美)的时候,用pandas无法搞掂,此时,依然是使用pandas结合openyxl、xlwings来搞掂需求
2.openpyxl:若电脑上未安装office时,也可以使用openpyxl,这个类型可以运行在linux上,并且也可以实现操作大部分Excel格式和样式的功能,使用它配合pandas,也可以完成大部分场景的需求
3.xlwings:比openyxl更加强大,只能运行在Windows或者Mac系统,并且该系统中必须安装了office才能运行,xlwings的原理,就是基于当前系统已经安装好的office软件,来进行功能的拓展来操作Excel
-
使用pandas的时候,经常会结合其他类库,来完成更加复杂的功能
-
requests, bs4:可以完成爬虫的功能
-
flask:可以做网页,把表格展示在网页上
-
Matplotlib:读取表格后,进行可视化
-
sklearn:进行复杂的数据分析时,也可以结合机器学习Sklearn把读取的Excel数据,进行数据分析和机器学习
-
Python-docx:也可以结合Python-docx类库,实现Excel和word的互通
-
smtplib:也可以使用smtplib,讲Excel数据发送邮件出去
-
-
开发环境
操作系统:使用windows, mac都可以
Python版本:系统中需要安装Python3.6以上的版本,Python2已经过期不建议使用,Python3.6以前的版本功能相对弱,最好就是采用Python3.6以上的版本
开发工具:有两个可以选择,jupyter notebook,是个网页编辑器,可以运行Python,常常用于交互性、探索性的开发;pycharm,用于成熟脚本,或者web服务的一些开发;这两个工具可以随意选择。
二、在Excel中按条件筛选数据并存入新的表
技术工具:
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)].valueqty_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].valuews_new.cell(row=i+2,column=2).value=data[month][i][0][1].valuews_new.cell(row=i+2,column=3).value=data[month][i][0][2].valuews_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].valuews_new.cell(row=i+2,column=6).value=data[month][i][0][5].valuews_new.cell(row=i+2,column=7).value=data[month][i][0][6].valuews_new.cell(row=i+2,column=8).value=data[month][i][0][7].valuews_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")
华丽的结果如下:
三、往期推荐
Python提取pdf中的表格数据(附实战案例)
使用Python自动发送邮件
Python操作ppt和pdf基础
Python操作word基础
Python操作excel基础
使用Python一键提取PDF中的表格到Excel
使用Python批量生成PPT版荣誉证书
使用Python批量处理Excel文件并转为csv文件
四、文末推荐与福利
《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
京东购买链接:https://item.jd.com/14098844.html
当当网购买链接:http://product.dangdang.com/29612772.html
名单公布时间:2023-10-05 21:00:00
相关文章:
【办公自动化】在Excel中按条件筛选数据并存入新的表(文末送书)
🤵♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞Ǵ…...
第三章:最新版零基础学习 PYTHON 教程(第十一节 - Python 运算符—Python 中的any与all)
Any 和 All 是 python 中提供的两个内置函数,用于连续的与/或。Any如果任何一项为 True,则返回 true。如果为空或全部为 false,则返回 False。Any 可以被认为是对所提供的可迭代对象进行 OR 操作的序列。它会短路执行,即一旦知道结果就停止执行。 句法: any(iterable) 函…...
Pytorch单机多卡分布式训练
Pytorch单机多卡分布式训练 数据并行: DP和DDP 这两个都是pytorch下实现多GPU训练的库,DP是pytorch以前实现的库,现在官方更推荐使用DDP,即使是单机训练也比DP快。 DataParallel(DP) 只支持单进程多线程…...
asp.net coremvc+efcore增删改查
下面是一个使用 EF Core 在 ASP.NET Core MVC 中完成增删改查的示例: 创建一个新的 ASP.NET Core MVC 项目。 安装 EF Core 相关的 NuGet 包。在项目文件 (.csproj) 中添加以下依赖项: <ItemGroup><PackageReference Include"Microsoft…...
Java基础面试,什么是面向对象,谈谈你对面向对象的理解
前言 马上就要找工作了,从今天开始一天准备1~2道面试题,来打基础,就从Java基础开始吧。 什么是面向对象,谈谈你对面向对象的理解? 谈到面向对象,那就不得不谈到面向过程。面向过程更加注重的是完成一个任…...
Ubuntu系统初始设置
更换国内源 安装截图工具 安装中文输入法 安装QQ 参考: 安装双系统win10Ubuntu20.04LTS(详细到我自己都害怕) 引导方式磁盘分区方法UEFIGPTLegancyMBR 安装网络助手 sudo apt install net-tools 安装VS Code 使用从官网下载.deb安装包…...
焕新古文化传承之路,AI为古彝文识别赋能
目录 1 古彝文与古典保护 2 古文识别的挑战 2.1 西文与汉文OCR 2.2 古彝文识别难点 3 合合信息:古彝文保护新思路 3.1 图像矫正 3.2 图像增强 3.3 语义理解 3.4 工程技巧 4 总结 1 古彝文与古典保护 彝文指的是云南、贵州、四川等地的彝族人使用的文字&am…...
毛玻璃动画交互效果
效果展示 页面结构组成 从上述的效果展示页面结构来看,页面布局都是比较简单的,只是元素的动画交互比较麻烦。 第一个动画交互是两个圆相互交错来回运动。第二个动画交互是三角绕着圆进行 360 度旋转。 CSS 知识点 animationanimation-delay绝对定位…...
Audio2Face的工作原理
预加载一个3D数字人物模型(Digital Mark),该模型可以通过音频驱动进行面部动画。 用户上传音频文件作为输入。 将音频输入馈送到预训练的深度神经网络中。 Audio2Face加载预制的3d人头mesh 3D数字人物面部模型由大量顶点组成,每个顶点都有xyz坐标。 深度神经网络输入音频特征,…...
【面试题】2023前端面试真题之JS篇
前端面试题库 (面试必备) 推荐:★★★★★ 地址:前端面试题库 表妹一键制作自己的五星红旗国庆头像,超好看 世界上只有一种真正的英雄主义,那就是看清生活的真相之后,依然热爱生活。…...
Mysql 分布式序列算法
接上文 Mysql分库分表 1.分布式序列简介 在分布式系统下,怎么保证ID的生成满足以上需求? ShardingJDBC支持以上两种算法自动生成ID。这里,使用ShardingJDBC让主键ID以雪花算法进行生成,首先配置数据库,因为默认的注…...
Windows/Linux双系统卸载Ubuntu
参考:双系统下完全卸载ubuntu...
asp.net core mvc 视图组件viewComponents
ASP.NET Core MVC 视图组件(View Components)是一种可重用的 UI 组件,用于在视图中呈现某些特定的功能块,例如导航菜单、侧边栏、用户信息等。视图组件提供了一种将视图逻辑与控制器解耦的方式,使视图能够更加灵活、可…...
如何保持终身学习
文章目录 2.1. 了解你的大脑2.2 学习是对神经元网络的塑造2.3 大脑的一生 3.学习的心里基础3.1 固定思维与成长思维3.2 我们为什么要学习 4. 学习路径4.1 构建知识模块4.2 大脑是如何使用注意力的4.3 提高专注力4.4 放松一下,学的更好4.5 巩固你的学习痕迹4.6 被动学…...
【RV1103】RTL8723bs (SD卡形状模块)驱动开发
文章目录 前言硬件分析Luckfox Pico的SD卡接口硬件原理图LicheePi zero WiFiBT模块总结 正文Kernel WiFi驱动支持Kernel 设备树支持修改一:修改二: SDK全局配置支持 wifi全局编译脚本支持编译逻辑拷贝rtl8723bs的固件到文件系统的固定目录里面去 上电后手…...
LeetCode 周赛上分之旅 #49 再探内向基环树
⭐️ 本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 和 BaguTree Pro 知识星球提问。 学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越抽象,它能覆盖的问题域就越广,理解难度…...
kubernetes-v1.23.3 部署 kafka_2.12-2.3.0
文章目录 [toc]构建 debian 基础镜像部署 zookeeper配置 namespace配置 gfs 的 endpoints配置 pv 和 pvc配置 configmap配置 service配置 statefulset 部署 kafka配置 configmap配置 service配置 statefulset 这里采用的部署方式如下: 使用自定义的 debian 镜像作为…...
位置编码器
目录 1、位置编码器的作用 2、代码演示 (1)、使用unsqueeze扩展维度 (2)、使用squeeze降维 (3)、显示张量维度 (4)、随机失活张量中的数值 3、定义位置编码器类,我…...
Lua多脚本执行
--全局变量 a 1 b "123"for i 1,2 doc "Holens" endprint(c) print("*************************************1")--本地变量(局部变量) for i 1,2 dolocal d "Holens2"print(d) end print(d)function F1( ..…...
Spirng Cloud Alibaba Nacos注册中心的使用 (环境隔离、服务分级存储模型、权重配置、临时实例与持久实例)
文章目录 一、环境隔离1. Namespace(命名空间):2. Group(分组):3. Services(服务):4. DataId(数据ID):5. 实战演示:5.1 默…...
26663-2011 大型液压安全联轴器 课堂随笔
声明 本文是学习GB-T 26663-2011 大型液压安全联轴器. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了大型液压安全联轴器的分类、技术要求、试验方法及检验规则等。 本标准适用于联接两同轴线的传动轴系,可起到限制…...
ChatGPT架构师:语言大模型的多模态能力、幻觉与研究经验
来源 | The Robot Brains Podcast OneFlow编译 翻译|宛子琳、杨婷 9月26日,OpenAI宣布ChatGPT新增了图片识别和语音能力,使得ChatGPT不仅可以进行文字交流,还可以给它展示图片并进行互动,这是一次ChatGPT向多模态进化的…...
二、VXLAN BGP EVPN基本原理
VXLAN BGP EVPN基本原理 1、BGP EVPN2、BGP EVPN路由2.1、Type2路由——MAC/IP路由2.2、Type3路由——Inclusive Multicast路由2.3、Type5路由——Inclusive Multicast路由 ————————————————————————————————————————————————…...
Evil.js
Evil.js install npm i lodash-utils什么?黑心996公司要让你体统跑路了? 想在离开前给你们的项目留点小礼物? 偷偷地把本项目引入你们的项目吧,你们的项目会有但不仅限于如下的神奇效果: 仅在周日时: 当…...
使用sqlmap的 ua注入
文章目录 1.使用sqlmap自带UA头的检测2.使用sqlmap随机提供的UA头3.使用自己写的UA头4.调整level检测 测试环境:bWAPP SQL Injection - Stored (User-Agent) 1.使用sqlmap自带UA头的检测 python sqlmap.py -u http://127.0.0.1:9004/sqli_17.php --cookie“BEEFHOO…...
华为云云耀云服务器L实例评测 | 实例评测使用之体验评测:华为云云耀云服务器管理、控制、访问评测
华为云云耀云服务器L实例评测 | 实例评测使用之体验评测:华为云云耀云服务器管理、控制、访问评测 介绍华为云云耀云服务器 华为云云耀云服务器 (目前已经全新升级为 华为云云耀云服务器L实例) 华为云云耀云服务器是什么华为云云耀…...
resultmap
自定义映射resultMap resultMap处理字段和属性的映射关系 若字段名和实体类中的属性名称不一致,则可以通过resultMap设置自定义映射 建moudel项目【实现多对一、一对多的表操作demo】 temp员工表、dept部门表 导入依赖【mysql驱动、junit、mybatis、日志依赖log4…...
宽带光纤接入网中影响家宽业务质量的常见原因有哪些
1 引言 虽然家宽业务质量问题约60%发生在家庭网(见《家宽用户家庭网的主要质量问题是什么?原因有哪些》一文),但在用户的眼里,所有家宽业务质量问题都是由运营商的网络质量导致的,用户也因此对不同运营商家…...
C++ - 封装 unordered_set 和 unordered_map - 哈希桶的迭代器实现
前言 unordered_set 和 unordered_map 两个容器的底层是哈希表实现的,此处的封装使用的 上篇博客当中的哈希桶来进行封装,相当于是在 哈希桶之上在套上了 unordered_set 和 unordered_map 。 哈希桶的逻辑实现: C - 开散列的拉链法&…...
gradle中主模块/子模块渠道对应关系通过配置实现
前言: 我们开发过程中,经常会面对针对不同的渠道,要产生差异性代码和资源的场景。目前谷歌其实为我们提供了一套渠道包的方案,这里简单描述一下。 比如我主模块依赖module1和module2。如果主模块中声明了2个渠道A和B,…...
广州花都网站建设/百度搜索网页版入口
#include<algorithm> <numeric> <functional> 遍历算法 for_each: vector<int>v; v.push_back(1);v.push_back(2);v.push_back(3); for_each(v.begin(),v.end(),普通函数); for_each(v.begin(),v.end(),仿函数); transform:搬运容器到另外一个容…...
盐城专业做网站的公司/优化游戏卡顿的软件
pt-query-digest_详细使用方法1. pt介绍1.1. 说明1.2. 安装2 语法选项2.1 所有参数2.2 常见参数2.3 事件和属性2.4 分组2.5 过滤2.6 排序2.7 输出选项2.8 DSN(数据源)选项3. 慢日志3.1 事件属性3.2 分析报告3.2.1 第一部分:总体概况说明3.2.2 第二部分:查…...
网站备案需要提供哪些资料/百度的营销策略
在本篇博客中我们主要讲描述分片集群的搭建过程。配置分片集群主要有两个步骤,第一启动所有需要的mongod和mongos进程。第二步就是启动一个mongos与集群通信。下面我们一步步来描述集群的搭建过程。 图1-1 MongoDB分片集群中的组件 图 1-2 由实例分片集群构成的进程…...
自己做传奇网站/宁波seo关键词优化制作
STS介绍Spring Tool Suite(sts)就是一个基于Eclipse的开发环境, 用于开发Spring应用程序。它提供了一个现成的使用环境来实现, 调试, 运行, 和部署你的Spring应用程序。包括为关键的的服务器和云计算,Git, Maven, Aspe…...
wordpress siren主题/引流软件
我希望通过博客的形式记录自己项目和基础积累的过程,这篇是算法以及程序设计的开篇。 题目:poj1753 Flip Game Time:1000MS Mem:65536K 描述:黑白两面的棋子,给一个4*4棋盘,每轮可以翻动其中任意一个棋子࿰…...
企业产品网站源码/百度网页版下载
很多朋友喜欢用 mac ,使用的工具有 jetbrains 全家桶, intellij IDEA PYCHARM WEBSTOEM PHPSTOTM RESHARPER , DATAGRIP , RUBYMINE, APPCODE, RIDER, DOTCOER, CLION , GOLAND, RESHARPER C, DOTRRACE, DOTMEMERY. 等工具, 但是很多版本更新太快, 如果搜到网上的注册 ,很容易…...