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

简介: 【办公自动化】在Excel中按条件筛选数据并存入新的表2.0

一、Python处理Excel


  • Python处理Excel的好处


  1. 开源库支持:Python 有许多开源库(例如 openpyxl、xlrd、xlwt、pandas 等)可以用于读取、写入和操作 Excel 文件,这些库丰富而强大,支持各种 Excel 格式,包括 .xls 和 .xlsx。


  1. 数据处理能力:Python 具有强大的数据处理能力,可以轻松地从 Excel 文件中提取、转换和操作数据,包括数据清洗、筛选、合并、计算和可视化。


  1. 自动化:Python 可以用于自动化 Excel 任务,例如批量处理多个 Excel 文件,根据特定条件过滤和修改数据,自动生成报告和图表,以及自动发送电子邮件等。


  1. 与其他库集成:Python 可以与其他数据处理和分析库(如 NumPy、pandas、Matplotlib 等)无缝集成,使您能够在 Excel 数据上执行更复杂的分析和可视化。


  1. 跨平台性:Python 是跨平台的,可以在 Windows、Mac 和 Linux 等操作系统上运行,因此可以轻松地处理来自不同平台的 Excel 文件。


  1. 社区支持和文档:Python 社区非常庞大,有大量的文档、教程和示例代码可供学习和参考,帮助您解决与 Excel 处理相关的问题。


  1. 可扩展性:如果标准库中的功能不足以满足您的需求,您还可以使用其他第三方库来扩展 Python 的 Excel 处理功能,或者编写自定义脚本来执行特定的操作。


  • Python处理Excel主要有三大类库


  1. openpyxl:


优势:openpyxl 是一个功能丰富的库,用于读取、写入和编辑 Excel 文件,特别适用于处理 .xlsx 格式的文件。它支持大多数 Excel 功能,包括工作表的创建、修改、格式化,单元格内容的读取和写入,以及图表的创建。

适用场景:如果您需要与 Excel 2007及更高版本的 .xlsx 文件进行交互,openpyxl 是一个很好的选择。


  1. xlrd 和 xlwt:


xlrd 用于读取 Excel 文件,而 xlwt 用于创建和写入 Excel 文件,主要支持 .xls 格式。

优势:虽然这两个库在处理 .xlsx 文件方面不如 openpyxl 强大,但它们在处理早期版本的 Excel 文件(.xls 格式)方面非常有用,而且它们简单易用。

适用场景:当您需要与较早版本的 Excel 文件进行交互时,或者需要在读取和写入操作中保持兼容性时,可以考虑使用这些库。


  1. pandas:


优势:pandas 是一个强大的数据分析库,可以轻松地处理各种数据,包括从 Excel 文件中读取数据。它可以读取和写入 Excel 文件,支持 .xls 和 .xlsx 格式,并提供了丰富的数据处理和分析功能。

适用场景:pandas 特别适合在数据分析、数据清洗、数据转换和数据可视化等任务中处理 Excel 数据。它使得在 Python 中进行复杂的数据操作变得容易。


  • 开发环境


操作系统:使用windows


Python版本:系统中需要安装Python3.8以上的版本


开发工具:选择 jupyter notebook


二、在Excel中按条件筛选数据并存入新的表


技术工具:


Python版本:3.9


代码编辑器:jupyter notebook


去年领用物料情况记录在278张Excel表中,老板希望按领用量从高到低排序并查看前10种领用最多的物料。手动操作需要合并表格并使用数据透视表,Python的pandas库可快速高效处理数据,演示如何用它统计一个Excel工作簿中278张表的数据并汇总排序。

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文件

目录
相关文章
|
9月前
|
数据采集 数据可视化 JavaScript
用 通义灵码和 PyQt5 爬虫智能体轻松爬取掘金,自动化采集技术文章和数据
本文介绍了如何利用智能开发工具通义灵码和Python的PyQt5框架,构建一个自动化爬取掘金网站技术文章和数据的智能爬虫系统。通过通义灵码提高代码编写效率,使用PyQt5创建可视化界面,实现对爬虫任务的动态控制与管理。同时,还讲解了应对反爬机制、动态内容加载及数据清洗等关键技术点,帮助开发者高效获取并处理网络信息。
|
8月前
|
数据采集 运维 监控
|
12月前
|
数据采集 JSON 前端开发
GraphQL接口采集:自动化发现和提取隐藏数据字段
本文围绕GraphQL接口采集展开,详解如何通过`requests`+`Session`自动化提取隐藏数据字段,结合爬虫代理、Cookie与User-Agent设置实现精准抓取。内容涵盖错误示例(传统HTML解析弊端)、正确姿势(GraphQL请求构造)、原因解释(效率优势)、陷阱提示(反爬机制)及模板推荐(可复用代码)。掌握全文技巧,助你高效采集Yelp商家信息,避免常见误区,快速上手中高级爬虫开发。
231 3
GraphQL接口采集:自动化发现和提取隐藏数据字段
|
缓存 监控 API
微店商品详情API接口实战指南:从零实现商品数据自动化获取
本文介绍了微店商品详情API接口的应用,涵盖申请与鉴权、签名加密、数据解析等内容。通过Python实战演示了5步获取商品数据的流程,并提供了多平台同步、价格监控等典型应用场景。开发者可利用此接口实现自动化操作,提升电商运营效率,降低人工成本。文中还总结了频率限制、数据缓存等避坑指南,助力开发者高效使用API。
|
数据采集 消息中间件 API
微店API开发全攻略:解锁电商数据与业务自动化的核心能力
微店开放平台提供覆盖商品、订单、用户、营销、物流五大核心模块的API接口,支持企业快速构建电商中台系统。其API体系具备模块化设计、双重认证机制、高并发支持和数据隔离等特性。文档详细解析了商品管理、订单处理、营销工具等核心接口功能,并提供实战代码示例。同时,介绍了企业级整合方案设计,如订单全链路自动化和商品数据中台架构,以及性能优化与稳定性保障措施。最后,针对高频问题提供了排查指南,帮助开发者高效利用API实现电商数智化转型。适合中高级开发者阅读。
|
9月前
|
Python
如何根据Excel某列数据为依据分成一个新的工作表
在处理Excel数据时,我们常需要根据列值将数据分到不同的工作表或文件中。本文通过Python和VBA两种方法实现该操作:使用Python的`pandas`库按年级拆分为多个文件,再通过VBA宏按班级生成新的工作表,帮助高效整理复杂数据。
|
9月前
|
数据采集 数据可视化 数据挖掘
用 Excel+Power Query 做电商数据分析:从 “每天加班整理数据” 到 “一键生成报表” 的配置教程
在电商运营中,数据是增长的关键驱动力。然而,传统的手工数据处理方式效率低下,耗费大量时间且易出错。本文介绍如何利用 Excel 中的 Power Query 工具,自动化完成电商数据的采集、清洗与分析,大幅提升数据处理效率。通过某美妆电商的实战案例,详细拆解从多平台数据整合到可视化报表生成的全流程,帮助电商从业者摆脱繁琐操作,聚焦业务增长,实现数据驱动的高效运营。
|
11月前
|
存储 安全 大数据
网安工程师必看!AiPy解决fscan扫描数据整理难题—多种信息快速分拣+Excel结构化存储方案
作为一名安全测试工程师,分析fscan扫描结果曾是繁琐的手动活:从海量日志中提取开放端口、漏洞信息和主机数据,耗时又易错。但现在,借助AiPy开发的GUI解析工具,只需喝杯奶茶的时间,即可将[PORT]、[SERVICE]、[VULN]、[HOST]等关键信息智能分类,并生成三份清晰的Excel报表。告别手动整理,大幅提升效率!在安全行业,工具党正碾压手动党。掌握AiPy,把时间留给真正的攻防实战!官网链接:https://www.aipyaipy.com,解锁更多用法!
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
2463 10
|
数据采集 存储 JavaScript
自动化数据处理:使用Selenium与Excel打造的数据爬取管道
本文介绍了一种使用Selenium和Excel结合代理IP技术从WIPO品牌数据库(branddb.wipo.int)自动化爬取专利信息的方法。通过Selenium模拟用户操作,处理JavaScript动态加载页面,利用代理IP避免IP封禁,确保数据爬取稳定性和隐私性。爬取的数据将存储在Excel中,便于后续分析。此外,文章还详细介绍了Selenium的基本设置、代理IP配置及使用技巧,并探讨了未来可能采用的更多防反爬策略,以提升爬虫效率和稳定性。
873 4