当前位置: 首页 > news >正文

【办公自动化】在Excel中按条件筛选数据并存入新的表2.0(文末送书)

🤵‍♂️ 个人主页:@艾派森的个人主页

✍🏻作者简介: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

        去年共有278天领用了物料,记录在278张Excel表中。现在,老板想将所有物料按领用量从高到低排序,以便查看前10种领用最多的物料的情况。如果手工操作,需要把每张工作表的内容合并在一起,再用数据透视表来做。而对于这种重复操作,Phthon最擅长。但Python还有个功能强大的`pandas`(Python Data Analysis Library)库,专门用于做数据分析。它包含很多数据处理的函数和方法,可帮助我们快捷高效地处理数据。现在,我们就来演示如何用`pandas`统计一个Excel工作簿中278张表的数据并汇总,排序。我们先导入`pandas`库,为方便后续简化书写,大家都习惯于给它起个小名叫`pd`。

import pandas as pd

        然后我们先用`pd.read_excel()`打开第一张工作表,试试水,打开后存入变量`df`。传入要打开的工作簿,即`'日领料单.xlsx'`。数据的字段名在第三行,指定`header=2`。因为header是用0表示第一行,所以第三行对应的索引为2。第一张表的名称叫`01-03`,所以指定参数`sheet_name = '01-03'`。打开后,用`df.head()`看一下效果,这个函数值看头几行数据,括号内不填具体数量,则默认头五行。相对应的,`df.tail()`则是看末尾5行。

df = pd.read_excel('日领料单.xlsx' ,header=2, sheet_name = '01-03')
df.head()

        数据显示与Excel表中完全一致,那就可以开始下一步了,即按照“物料编号”和“物料描述”字段将“批号批数量”加总。这里将使用到`groupby()`,它的作用是分组聚合,有点类似数据透视表中的“行”。此处我们按“物料编号”和“物料描述”分组聚合数据,并按“批号批数量”加总`['批号批数量'].sum()`。因为汇总数据后,行会减少(从191行减少到163行),所以需要重设行编号`reset_index()`,按0~162重新编号。 

#按物料编号加总领料数量
df_sum = df.groupby(['物料编号','物料描述'])['批号批数量'].sum().reset_index()
df_sum.tail() #看尾部5行的数据

        然后我们用`sort_values()`排序,排序规则是从大到小`ascending = False`,并看前10项的数据`head(10)`。这个跟Excel中的数据透视表得到的结果完全一致。

df_sum.sort_values('批号批数量',ascending = False).head(10)

        以上,是对单个工作表的处理,下面我们用同样的方式遍历全部278张工作表,然后汇总数据。先新建一个空的数据框`result`,用于存储汇总所有工作表的结果。然后通过传入参数`sheet_name = None`(即不指定工作表,则全部读取),读取整个Excel文件中的所有工作表。然后按工作表名遍历所有工作表,分组聚合,加总“批号批数量”,将汇总后的数据框`df_sum`通过连接函数`concat`增加到`result`中。在此处,`concat`有点类似于列表中的`append`增加元素的功能,这里增加的是DataFrame。其作用的示意图如下。

#新建一个DataFrame用于存储汇总所有工作表的结果
result = pd.DataFrame()#读取整个Excel文件中的所有表
df = pd.read_excel('日领料单.xlsx', header=2, sheet_name = None)
#按表名遍历,处理数据
for sheet_name in df.keys():    #按物料编号加总领料数量df_sum = df[sheet_name].groupby(['物料编号','物料描述'])['批号批数量'].sum().reset_index()    result = pd.concat([result,df_sum])result.head()

        以上,`df.keys()`存有所有工作表名,共278个。通过`for`循环逐个从其中取出名字,然后通过名字读取数据及汇总。

df.keys()

        数据汇总在一起后,需要再最后分类汇总一下(因为每天领取的物料是有重复的,需要将相同物料编号对应的数量加总),并降序排序。最终得到领用量最多的10个物料。

final = result.groupby(['物料编号','物料描述'])['批号批数量'].sum().reset_index().sort_values('批号批数量',ascending = False)
final.head(10)

 

我们还可以将最终结果保存为Excel文件,以便在Excel中操作。

final.to_excel("汇总.xlsx")

 三、往期推荐

Python提取pdf中的表格数据(附实战案例)

使用Python自动发送邮件

Python操作ppt和pdf基础

Python操作word基础

Python操作excel基础

使用Python一键提取PDF中的表格到Excel

 使用Python批量生成PPT版荣誉证书

使用Python批量处理Excel文件并转为csv文件

四、文末推荐与福利

《AI时代程序员开发之道》免费包邮送出3本!

内容简介:   

        《AI时代程序员开发之道:ChatGPT让程序员插上翅膀》是一本介绍如何使用ChatGPT的实用手册,它建立了一个新的程序员开发模式。《AI时代程序员开发之道:ChatGPT让程序员插上翅膀》从介绍 “ChatGPT第一次接触”开始,深入分析如何使用该工具来提高开发效率和质量。《AI时代程序员开发之道:ChatGPT让程序员插上翅膀》的每一章都涵盖了ChatGPT的不同应用场景,从编写各种文档,到辅助进行需求分析和系统设计,以及数据库设计和开发高质量代码等,均有详尽的讲解。读者将从中了解到,如何利用ChatGPT这一AI工具来辅助程序员更加高效地开发软件。
        《AI时代程序员开发之道:ChatGPT让程序员插上翅膀》还特别介绍了如何使用ChatGPT辅助进行系统测试以及任务管理,并对源代码底层逻辑进行了深入分析。这个全面的框架将帮助读者在软件开发过程中更好地管理和优化代码。最后,《AI时代程序员开发之道:ChatGPT让程序员插上翅膀》以两个实战案例作为结尾:第一个是使用ChatGPT辅助开发PetStore宠物商店项目,第二个是使用ChatGPT辅助开发“我的备忘录”App。这两个实战案例将会帮助读者更好领悟如何将ChatGPT引入具体的软件开发中。

  • 抽奖方式:评论区随机抽取3位小伙伴免费送出!
  • 参与方式:关注博主、点赞、收藏、评论区评论“人生苦短,拒绝内卷!”(切记要点赞+收藏,否则抽奖无效,每个人最多评论三次!
  • 活动截止时间:2023-10-14 20:00:00
  • 京东购买链接:https://item.jd.com/13816183.html

  • 当当网购买链接:http://product.dangdang.com/29610424.html

 名单公布时间:2023-10-14 21:00:00  

相关文章:

【办公自动化】在Excel中按条件筛选数据并存入新的表2.0(文末送书)

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…...

HDLbits: Lfsr5

我的错误写法,半成品,完全错误: module top_module(input clk,input reset, // Active-high synchronous reset to 5h1output [4:0] q ); dff dff_1(clk, 0 ^ q[0],q[4]);dff dff_2(clk, q[4] ,q[3]);dff dff_3(clk, q[3] ^ q[0] ,q[2]);…...

Visual Studio 错误CS0006:未能找到元数据文件踩坑记录

前言 在写项目的时候,添加了个新的Nuget包,突然就不行,然后就是报错,找不到文件、 出现的原因是因为项目之间互相引用出现了问题,比如如下情况 先版本回退 如果有Git仓库 第一时间去看Git 文件比较,找到…...

tcpdump(三)命令行参数讲解(二)

一 tcpdump实战详解 骏马金龙tcpdump详解 强调: 注意区分选项参数和过滤条件 本文继上篇 网卡没有开启混杂模式 tcpdump默认开启混杂模式 --no-promiscuous-mode --> 可以指定在非混杂模式抓包 ① -vv 控制详细内容的输出 ② -s -s 长度: 可以只…...

面试算法25:链表中的数字相加

题目 给定两个表示非负整数的单向链表,请问如何实现这两个整数的相加并且把它们的和仍然用单向链表表示?链表中的每个节点表示整数十进制的一位,并且头节点对应整数的最高位数而尾节点对应整数的个位数。例如,两个分别表示整数98…...

APP如何设计应用的屏幕截图以提高下载量

APP高质量的应用程序商店屏幕截图,对于建立初始信任以及向潜在用户推销应用程序的优势至关重要。创建应用程序商店屏幕截图,以最好的方式展示我们的应用程序,从而优化应用形象。 1、使用大标题。 确保重点突出品牌的独特性,在屏幕…...

qt 关于自定义控件,然后其他页面提升后背景样式表不生效问题

一、自定义控件如果是widget ,需要再widget 里放一个QFrame ,在QFrame设置样式表背景才行 二、重写paintEvent void Form::paintEvent(QPaintEvent *e) {QStyleOption opt;opt.init(this);QPainter p(this);style()->drawPrimitive(QStyle::PE_Widg…...

对比纯软开与嵌入式硬件开发谁更好呢?

对比纯软开与嵌入式硬件开发谁更好呢? 你的纠结和犹豫是理解的,职业选择确实是一个重要的决策。我明白你在嵌入式和软件开发之间犹豫不决的原因。让我给你提供一些建议,帮助你做出更明智的决定。最近很多小伙伴找我,说想要一些嵌入…...

软考 系统架构设计师系列知识点之软件质量属性(5)

接前一篇文章:软考 系统架构设计师系列知识点之软件质量属性(4) 所属章节: 第8章. 系统质量属性与架构评估 第2节. 面向架构评估的质量属性 相关试题 5. 某公司欲开发一个网上商城系统。在架构设计阶段,公司的架构师…...

修改ubuntu服务器fs文件最大打开数

起因 在对项目进行压测的时候,请求异常 java.net.SocketException: socket closed,查看nginx代理服务器的日志。tail -f -n500 /var/log/nginx/error.log 显示 文件打开数太多socket() failed (24: Too many open files) while connecting to upstream …...

linux下Qt的pro文件

生成生成文件后缀名的说明。这只是泛泛而谈,实际发现跟编译器有关。比如在windows系统上用MinGW,可能静态库还是a后缀。 文件静态库动态库目标文件LINUXasooWINDOWSlibdllobj 在.pro文件中,INCLUDEPATH用于引入外部库的头文件,L…...

git常用命令和开发常用场景

git命令 git init 创建一个空的git仓库或者重新初始化已有仓库 git clone [url] 将存储库克隆到新目录 git add 添加内容到索引 git status 显示工作树状态 git commit -m "" 记录仓库的修改 git reset 重置当前HEAD到指定的状态 git reset –-soft:…...

02 认识Verilog HDL

02 认识Verilog HDL ‍ 对于Verilog的语言的学习,我认为没必要一开始就从头到尾认真的学习这个语言,把这个语言所有细节都搞清楚也不现实,我们能够看懂当前FPGA的代码的程度就可以了,随着学习FPGA深度的增加,再不断的…...

解决VUE安装依赖时报错:npm ERR! code ERESOLVE

前言 在使用 npm 安装项目依赖时,有时会遇到错误信息 “npm ERR! code ERESOLVE”,该错误通常发生在依赖版本冲突或者依赖解析问题时。本文将详细介绍出现这个错误的原因,并提供解决方法,确保正确安装项目依赖并避免该错误的发生。…...

软件公司的项目管理软件选择指南

我们经常在项目推进中经常遇到各种各样的问题,最常见的是因团队工作效率低而无法在截止日期之前按时完成工作。但是如果能合理使用项目管理软件,可以有效监控项目进程,提高工作效率,从而保证按时完成任务。那么软件公司适合什么项…...

2、服务器安装docker

# 1.卸载旧的版本 yum remove -y docker \ docker-client\ docker-client-latest\ docker-common docker-latest\ docker-latest-logrotate\ docker-logrotate docker-s…...

UDP报文结构

文章目录 一、UDP报头1.1源端口号1.2目的端口号1.3UDP报文长度1.4UDP校验和(checksum) UDP报头和UDP载荷(payload)之间的拼接可以认为是一个“字符串拼接”,里面是二进制数据。 一、UDP报头 UDP报头分成4个部分,每个部分2个字节。分别是: 1…...

(高阶) Redis 7 第21讲 IO多路复用模型 完结篇

🌹 以下分享 Redis IO多路复用模型,如有问题请指教。🌹🌹 如你对技术也感兴趣,欢迎交流。🌹🌹🌹 如有对阁下帮助,请👍点赞💖收藏🐱‍🏍分享😀 IO多路复用模型是什么 I/O:网络IO 多路:多个客户端连接(连接即套接字描述符,即socket或channel),指…...

2023年入职/转行网络安全,该如何规划?

前言 前段时间,知名机构麦可思研究院发布了 《2022年中国本科生就业报告》,其中详细列出近五年的本科绿牌专业,其中,信息安全位列第一。 网络安全前景 对于网络安全的发展与就业前景,想必无需我多言,作为…...

解密RabbitMQ:你所不知道的端口及其重要性

解密RabbitMQ:你所不知道的端口及其重要性 前言第一部分:AMQP默认端口(5672)第二部分:RabbitMQ管理界面端口(15672)第三部分:Erlang Port Mapper Daemon(epmd)端口(4369&…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败&#xff0c;具体原因是客户端发送了密码认证请求&#xff0c;但Redis服务器未设置密码 1.为Redis设置密码&#xff08;匹配客户端配置&#xff09; 步骤&#xff1a; 1&#xff09;.修…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...