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

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

✍作者简介:Python学习者
希望大家多多支持,我们一起进步!
如果文章对你有帮助的话,
欢迎评论 点赞 收藏 加关注+


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

目录

一、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行。

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

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

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

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

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

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

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

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

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

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

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

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

#新建一个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()

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

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

df.keys()

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

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

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

我们还可以将最终结果保存为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本!

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

内容简介:   

        《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  

你可能感兴趣的:(办公自动化,python,excel)