python办公自动化-按需求批量提取EXCEL数据,python只需要几秒钟!

2023-11-16

作者: 锋小刀
微信搜索【Python与Excel之交】关注我的公众号查看更多内容

Hi~大家好,又到Python偷懒时刻。

今天讲解的是如何利用Python来按需求批量提取EXCEL表格数据,然后进行保存。在用excel进行工作时,这样的操作在日常办公中是经常会用到,而用Python实现将会大大提高工作效率!

需求描述

本文新建了一个excel文件让案例更具有普遍性,文件共有十二个工作表,包括12个月的销售记录:
在这里插入图片描述

需求如下:

 - 提取表格中名为锋小刀的销售员的销售记录
 - 提取表格中销售额超过2000的销售记录 
 - 提取表格中名为锋小刀的销售员且销售额超过2000的销售记录 
 - 筛选除锋小刀的销售记录
 - 计算各个销售员的销售总额
 - 取出每个月1号的销售记录
 - 按以上需求为名称重命名工作表名称
 - 按原工作簿中的工作表名称+总表.xslx保存为多个excel文件

简单的说就是创建12个excel工作簿,工作簿中包含6个需求为名称的工作表,工作表里面保存着需求数据。

代码实现

导入pandas模块。

import pandas

我们需要先读取工作簿中的所有工作表,然后再进行一个一个工作表的数据提取。

这里 sheet_name=None不指定工作表,利用循环遍历 df_name.keys()取出所有工作表名称,然后把工作表名称放入df中的sheet_name,一个一个的打开工作表:

df_name = pd.read_excel('2021年销售员销售记录.xlsx', sheet_name=None)
for i in df_name.keys():
    df = pd.read_excel('2021年销售员销售记录.xlsx', sheet_name=i)

提取表格中名为锋小刀的销售员的销售记录,只要 销售员列出现锋小刀的销售员提取出来:

df1 = df[df['销售员'] == '锋小刀']
df1 = df1.reset_index(drop=True) # 重置索引
df1.head()

在这里插入图片描述
提取表格中销售额超过2000的销售记录:

df2 = df[df['销售额'] > 2000]
df2 = df2.reset_index(drop=True)
df2.head()

在这里插入图片描述
提取表格中名为锋小刀的销售员且销售额超过2000的销售记录,该需求是双重条件,所以这里用符号 & 进行连接:

df3 = df[(df['销售员'] == '锋小刀') & (df['销售额'] >= 2000)]
df3 = df3.reset_index(drop=True)
df3.head()

在这里插入图片描述
筛选除锋小刀的销售记录:

df4 = df[(df['销售员'] != '锋小刀')]
df.sample(10)

在这里插入图片描述
计算各个销售员的销售总额,这里用 groupby()按销售员进行分组以及sum()进行分组求和计算:

df5 = df.groupby(by='销售员')['销售额'].sum()

在这里插入图片描述
取出每个月1号的销售记录,这里先将销售日期列转换为字符串数据类型,然后用contains()函数以及正则表达式进行筛选:

df['销售日期'] = df['销售日期'].values.astype('str')
df6 = df.销售日期.str.contains('.*-.*-01')
df6 = df[df6]

在这里插入图片描述
pd.ExcelWriter()创建工作簿,以工作表名称+总表.xlsx为名称进行保存:

excel_name = pd.ExcelWriter(f'{i}总表.xlsx')

with循环进行不断创建工作簿,然后保存工作簿并修改工作表名称以及索引:

with pd.ExcelWriter(excel_name) as writer:
   df1.to_excel(excel_writer=writer, sheet_name='锋小刀的销售记录', index_label='序号')
   df2.to_excel(excel_writer=writer, sheet_name='销售额超过2000的销售记录', index_label='序号')
   df3.to_excel(excel_writer=writer, sheet_name='锋小刀销售额超过2000的销售记录', index_label='序号')
   df4.to_excel(excel_writer=writer, sheet_name='筛选除锋小刀的销售记录', index_label='序号')
   df5.to_excel(excel_writer=writer, sheet_name='各个销售员的销售额', index_label='销售员')
   df6.to_excel(excel_writer=writer, sheet_name='1号销售记录', index_label='序号')

运行效果:
在这里插入图片描述
在这里插入图片描述
代码不多,也简单,运行只需要几秒钟就可以搞定了!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python办公自动化-按需求批量提取EXCEL数据,python只需要几秒钟! 的相关文章

随机推荐

  • Spring事务实现原理

    Spring事务的原理是基于AOP实现的 所以流程也可以理解为与AOP一样分为3步 解析切面 织入通知和运行时增强 1 解析切面 Srping事务的是通过 EnableTransactionManagement注解开启的 该注解往IoC容器
  • 【逆向】使用CE查找Android中变量的偏移

    0x00 准备工作下载Cheat Engine以及调试器服务端 https www cheatengine org index php 夜神模拟器 https www yeshen com 下载安装贪婪洞窟 梦境模式 http a 4399
  • 【华为OD机试】路灯照明问题 (C++ Python Java)2023 B卷

    时间限制 C C 1秒 其他语言 2秒 空间限制 C C 262144K 其他语言524288K 64bit IO Format lld 题目描述 在一条笔直的公路上安装了N个路灯 从位置0开始安装 路灯之间间距固定为100米 每个路灯都有
  • oracle修改块大小设置,oracle性能调整(1)

    1调整数据库服务器的性能Oracle数据库服务器是整个系统的核心 它的性能高低直接影响整个系统的性能 为了调整Oracle数据库服务器的性能 主要从以下几个方面考虑 1 1Oracle 调整操作系统以适合Oracle数据库服务器运行数据库服
  • 利用PicGo+Gitee配置图床

    引言 配置图床 方便我们的使用 比如 我们利用typora写的笔记 直接把发送给别人也可以正常使用 不再会有由于本地图片 而加载不出来图片的情况 此外 图片文件遗失亦可以正常加载出来 因为图片已上传 这里已 Typora Gitee Pic
  • java String(一)—— Java中的String类型

    一 需要理解的代码 import java lang reflect Array import java util ArrayList import java util Arrays import java util HashMap imp
  • DNS服务器正向/反向解析配置

    第四次作业 题目 配置DNS正反向解析 一 正向解析 1 装包 2 配置服务 3 配置服务器 4 测试 1 yum install bind y 2 vim etc named conf 监听53号端口 访问的是本机ip 129 168 2
  • c++命名空间

    命名空间 主要解决全局变量的冲突 内部不允许私有变量 所有变量都是公有的 namespace data int x 10 data x 为域作用符 直接使用等同于使用全局变量 不存在就是0 不包含匿名命名空间内变量 同一个文件引用stati
  • 相见恨晚的办公插件合集(二)

    之前有分享过一些办公的插件 如不坑盒子 打工人插件 易用宝等 下面就简单的介绍一下上面的几个神器后再补充一些其它办公神器吧 不坑盒子 word wps 这是一个非常好用的插件工具 专门应用在Word文档和wps 支持Office 2010以
  • 拓数派入选中国信通院 “铸基计划”「高质量数字化转型产品及服务全景图」

    7 月 27 日 由中国信息通信研究院 以下简称 中国信通院 主办的 2023 数字生态发展大会 暨中国信通院 铸基计划 年中会议在京召开 本次大会深度展示了中国信通院在数字化领域的工作成果 并正式发布了 高质量数字化转型产品及服务全景图
  • GUI基础知识

    GUI编程 1 简介 图形用户界面 Graphical User Interface 又称图形用户接口 是指采用图形方式显示的计算机操作用户界面 GUI的核心技术 AWT Swing 2 Awt 2 1 AWT简介 AWT Abstract
  • springboot报错Could not autowire. No beans of ‘RedisConnectionFactory‘ type found

    这个报错提示是因为springboot升级到2 6 9以后版本就会出现 报错界面 其实上面报错不影响程序使用 但是总是觉得别扭 提供3种解决方式 第一种方案 springboot版本降到2 6 9或以下 第二种方案 通过idea设置不提示该
  • Unity&Webform(2):自定义LifetimeManager和TypeConverter使Unity从HttpContext中取值注入WebForm页面...

    上一篇 Unity WebForm 1 自定义IHttpHandlerFactory使用Unity对ASP NET Webform页面进行依赖注入中让Unity和WebForm结合在一起 通过使用HttpHandlerFactory实现了对
  • 模式匹配算法

    下面分别介绍 朴素模式匹配算法 和 改进模式匹配算法 KMP 朴素模式匹配算法思想 从目标S中的第一个字符开始和模式T中的的第一个比较 用 i 和 j 分别指示S串和T串中正在比较字符的位置 若相等 则继续逐个比较后续字符 否则 从S 的第
  • 【PYTHON】conda/pip一些命令记录

    查看环境 conda info env conda env list 删除某环境 conda remove n
  • 数据结构:设计实现抽象数据类型“有理数”内容

    题目 设计实现抽象数据类型 有理数 内容 设计并上机实现抽象数据类型 有理数 有理数的基本操作包括 两个有理数的加 减 乘 除等 包括有理数的创建和输出 要求 有理数的类型 我们可以构造成一个结构体类型 这个结构体由两个整数构成 分别表示有
  • 深入理解设计原则之最少知识原则/迪米特法则(LOD)【软件架构设计】

    系列文章目录 高级C 并发线程编程 C 高性能优化编程系列 软件架构设计系列 深入理解设计模式系列 不怕别人瞧不起 就怕自己不争气 Are not afraid to look down upon he was afraid his dis
  • JavaWeb 【基础】 IDEA 创建javaweb项目,并使用servelet 开发简单接口

    目录 创建项目 配置web项目 创建servelet 添加servelet路径映射 方法一 使用 web xml 配置servelet映射 方法二 使用注解配置servelet映射 初学javaweb的时候 通常会遇到很多坑 下面系统的做一
  • transform: translateY(-100%)偏移实现上滑隐藏导航栏

    transform translateY 100 语法 Transform字面上就是变形 改变的意思 在CSS3中transform主要包括以下几种 旋转rotate 扭曲skew 缩放scale和移动translate以及矩阵变形matr
  • python办公自动化-按需求批量提取EXCEL数据,python只需要几秒钟!

    作者 锋小刀 微信搜索 Python与Excel之交 关注我的公众号查看更多内容 Hi 大家好 又到Python偷懒时刻 今天讲解的是如何利用Python来按需求批量提取EXCEL表格数据 然后进行保存 在用excel进行工作时 这样的操作