前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python办公自动化-按需求批量提取EXCEL数据,python只需要几秒钟!

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

作者头像
Python与Excel之交
发布2021-08-05 14:39:07
3.6K0
发布2021-08-05 14:39:07
举报
文章被收录于专栏:Python与Excel之交

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

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

需求描述

本文新建了一个excel文件让案例更具有普遍性,文件共有十二个工作表,包括12个月的销售记录:

需求如下:

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

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

代码实现
导入pandas模块。
代码语言:javascript
复制
import pandas

我们需要先读取工作簿中的所有工作表,然后再进行一个一个工作表的数据提取,这里 sheet_name=None不指定工作表,利用循环遍历 df_name.keys()取出所有工作表名称,然后把工作表名称放入df中的sheet_name,一个一个的打开工作表:

代码语言:javascript
复制
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)

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

代码语言:javascript
复制
df1 = df[df['销售员'] == '锋小刀']
df1 = df1.reset_index(drop=True) # 重置索引
df1.head()

提取表格中销售额超过2000的销售记录:

代码语言:javascript
复制
df2 = df[df['销售额'] > 2000]
df2 = df2.reset_index(drop=True)
df2.head()

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

代码语言:javascript
复制
df3 = df[(df['销售员'] == '锋小刀') & (df['销售额'] > 2000)]
df3 = df3.reset_index(drop=True)
df3.head()

筛选除锋小刀的销售记录:

代码语言:javascript
复制
df4 = df[(df['销售员'] != '锋小刀')]
df.sample(10)

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

代码语言:javascript
复制
df5 = df.groupby(by='销售员')['销售额'].sum()

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

代码语言:javascript
复制
df['销售日期'] = df['销售日期'].values.astype('str')
df6 = df.销售日期.str.contains('.*-.*-01')
df6 = df[df6]

pd.ExcelWriter()创建工作簿,以工作表名称+总表.xlsx为名称进行保存:

代码语言:javascript
复制
excel_name = pd.ExcelWriter(f'{i}总表.xlsx')

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

代码语言:javascript
复制
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='序号')

运行效果:

代码不多,也简单,运行只需要几秒钟就可以搞定了!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-02-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python与Excel之交 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 需求描述
  • 代码实现
  • 导入pandas模块。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档