全文共2391字,预计学习时长14分钟

图源:morioh

工作中,无穷无尽的表格有时会令人抓狂。Excel无处不在,即便有着像Python这样的强大工具任你使用,你也难以从中逃脱。

也许你的老板和同事仍然需要这种简单的方法来访问重要数据。但没关系!那并不意味着你不能通过使用Python来简化Excel工作。

全程无需使用Excel,逃离报表魔爪!

用Python将Excel报表自动化

你还在天天做Excel报表吗?而且还是为不同的客户做着四五次同样的报表吗?不如让Python代劳吧!

通过使用笔者在数据透视表教程中的数据(https://towardsdatascience.com/a-step-by-step-guide-to-pandas-pivot-tables-e0641d0c6c70),概览一下我们将要自动化到底是什么。

数据格式将使你期望从公司数据库中获得的内容与客户销售数据相匹配,与你期望从公司数据库中获得的数据相匹配。它按区域细分这些数据,并且创建两个带有格式和图表的汇总表。无需使用Excel!

最终的数据流—一个工作簿转化为四个格式化报告 | 图源:Nik Piepenbreier

加载库

使用Pandas和Openpyxl。笔者的“用Python自动化这三项(无聊!!!)Excel任务”( https://towardsdatascience.com/automate-these-3-boring-excel-tasks-with-python-666b4ded101b)一文中涵盖了许多关于Openpyxl的内容,对其如何运行提供了详细介绍。

#Section 1 - Loading our Libraries              import pandas as pd                  fromopenpyxl import load_workbook              from openpyxl.styles importFont              from openpyxl.chart importBarChart, Reference

你使用如下两个Librariy:

1. Pandas负责转化数据,并创建初始Excel文件

2. Openpyxl将工作薄格式化,并插入图表

加载数据

加载数据,并概览正在处理的内容。正如笔者所提到的,这些数据与读者从公司数据库系统获得的数据相似。

#Section 2 - Loading our Data             df = pd.read_excel('https://github.com/datagy/pivot_table_pandas/raw/master/sample_pivot.xlsx', parse_dates=['Date'])             print(df.head())                  #        Date Region                 Type  Units Sales             #0 2020-07-11   East Children's Clothing   18.0    306             #1 2020-09-23  North Children's Clothing   14.0    448             #2 2020-04-02  South    Women's Clothing   17.0    425             #3 2020-02-28   East Children's Clothing   26.0    832             #4 2020-03-19   West    Women's Clothing    3.0     33

在这里,使用Pandas读取Excel文件,并读取Date/日期列的日期。

创建数据透视表

接着我们要创建最终报告中所需要的汇总表。这里将创建一个数据透视表以作为例子,其中仅使用东部地区进行代码的实验。

#Section 3 - Testing Pivot Tables            filtered= df[df['Region'] =='East']            quarterly_sales= pd.pivot_table(filtered, index =filtered['Date'].dt.quarter, columns ='Type', values ='Sales', aggfunc='sum')                  print("Quarterly Sales Pivot Table:")            print(quarterly_sales.head())                  #Quarterly Sales Pivot Table:            #Type Children's Clothing  Men'sClothing  Women's Clothing            #Date                                                                  #1                   12274           13293             16729            #2                    5496           17817             22384            #3                   14463            9622             15065            #4                  13616           10953             16051

创建第一个Excel文件

有了数据透视表后,将其导入到一个Excel文件中,我们将用pandas来导入:

#Section 04 - Creating and Excel Workbook                 file_path=#Path to where you want your file saved                 quarterly_sales.to_excel(file_path, sheet_name ='Quarterly Sales', startrow=3)

这一步是在做什么:

· 创建一个文件路径变量,以确定要将文件存储在何处,

· 使用ExcelWriter保存文件

· 将两个透视表保存到单独的工作表中,从第3行开始(稍后从中保留以用于页眉)

使报表更漂亮

Pandas有助于将数据导入到Excel中。既然数据已经导入Excel,不妨将其美化一下,来添加一些可视化效果。

#Section 05 - Loading the Workbook                 wb =load_workbook(file_path)                 sheet1= wb['Quarterly Sales']                  # Section 06 - Formatting the First Sheet                 sheet1['A1'] ='Quarterly Sales'                 sheet1['A2'] ='datagy.io'                 sheet1['A4'] ='Quarter'                  sheet1['A1'].style ='Title'                 sheet1['A2'].style ='Headline 2'                  for i inrange(5, 9):                     sheet1[f'B{i}'].style='Currency'                     sheet1[f'C{i}'].style='Currency'                     sheet1[f'D{i}'].style='Currency'                  # Section 07 - Adding a Bar Chart                 bar_chart=BarChart()                 data=Reference(sheet1, min_col=2, max_col=4, min_row=4, max_row=8)                 categories=Reference(sheet1, min_col=1, max_col=1, min_row=5, max_row=8)                 bar_chart.add_data(data, titles_from_data=True)                 bar_chart.set_categories(categories)                 sheet1.add_chart(bar_chart, "F4")                  bar_chart.title ='Sales by Type'                 bar_chart.style=3                 wb.save(filename = file_path)

在Section 5中,将工作簿和工作表加载到Openpyxl可以处理的单独对象中。

而Section 6中操作更多:

· 在表一的A1和A2单元格中添加标题和副标题。

· 更改“quarters”列的标题,使其更能反映数据。

· 对标题和副标题应用样式。

· 将金融领域的单元格转换为货币。这需要对每单个单元格进行单独处理。因此使用了for循环。

在Section 7中,添加了条形图:

· 创建一个条形图对象,并识别存储数据和类别的字段。

· 随后将数据和类别应用于对象。

· 最后,添加描述性标题和样式。使用许多不同的样式都试试!

这就是工作簿现在的样子:

所得工作簿之一 | 图源: Nik Piepenbreier

对多个工作簿执行工作流自动化

虽然已经很方便了,但是仅在一个区域执行这样的操作只能节约一点点的时间。我们可使用for循环,对所有的区域执行此操作。

#Section 08 - Getting Region Names            regions =list(df['Region'].unique())                  # Section 09 - Looping Over All Regions            folder_path=#Insert the path to the folder you want tosave the reports in                  for region in regions:                filtered =df[df['Region'] ==f'{region}']                quarterly_sales = pd.pivot_table(filtered, index =filtered['Date'].dt.quarter, columns ='Type', values ='Sales', aggfunc='sum')                file_path =f"{path to your folder}{region}.xlsx"                quarterly_sales.to_excel(file_path,sheet_name ='QuarterlySales', startrow=3)                            wb =load_workbook(file_path)                sheet1 = wb['Quarterly Sales']                            sheet1['A1'] ='Quarterly Sales'                sheet1['A2'] ='datagy.io'                sheet1['A4'] ='Quarter'                      sheet1['A1'].style ='Title'                sheet1['A2'].style='Headline 2'                      for i inrange(5, 10):                    sheet1[f'B{i}'].style='Currency'                    sheet1[f'C{i}'].style='Currency'                    sheet1[f'D{i}'].style='Currency'                      bar_chart =BarChart()                data =Reference(sheet1, min_col=2, max_col=4, min_row=4, max_row=8)                categories =Reference(sheet1, min_col=1, max_col=1, min_row=5, max_row=8)                bar_chart.add_data(data,titles_from_data=True)                bar_chart.set_categories(categories)                sheet1.add_chart(bar_chart,"F4")                      bar_chart.                bar_chart.style =3

在Section 8中,创建了一个列表,其中包含了想要覆盖的不同区域的所有唯一值。

在Section 9中,在for循环中重复先前的代码:

· 创建一个新变量,该变量用于保存文件所在文件夹的路径

· 接下来,使用f-strings将区域名插入到脚本中,使得脚本对每个区域都是动态的。

图源:unsplash

Python的好处在于,它可使重复的任务具有可伸缩性。

想象一下,如果你每天都会收到这份文件,并且每天都要创建这些工作簿。这种方法能帮你节省多少时间!

留言点赞关注

我们一起分享AI学习与发展的干货

如转载,请后台留言,遵守转载规范

pandas如何保存在excel里面_省时省力!教你如何用Python将Excel报表自动化相关推荐

  1. python与excel教程_办公自动化系列(2) | Python与Excel交互教程 - 交互演示

    在上一篇我们已经配置好了环境,本篇我们进入实战. 在进入实战之前,要声明一点,虽然本篇有较多的篇幅来讲述如何使用Excel调用Python脚本,但是这个功能在实际工作中的应用场景极其有限,建议大家了解 ...

  2. python与excel教程_办公自动化系列(1) | Python与Excel交互教程 - 环境搭建

    要实现Python与Excel的交互,我们首先要找到一个连接双方的纽带,它就是xlwings.xlwings是一个python库,支持从Excel中调用Python,也支持通过Python去操作Exc ...

  3. 提取点位属性文本_手把手教你如何用Python爬取网站文本信息

    提取网页源代码--Requests 工具包 在我们提取网络信息之前,我们必须将网页的源代码进行提取,Requests工具包现在可以说是最好用和最普及的静态网页爬虫工具,它是由大神Kenneth Rei ...

  4. python爬取网页文本_手把手教你如何用Python爬取网站文本信息

    提取网页源代码--Requests 工具包 在我们提取网络信息之前,我们必须将网页的源代码进行提取,Requests工具包现在可以说是最好用和最普及的静态网页爬虫工具,它是由大神Kenneth Rei ...

  5. 安卓 python解释器_大牛教你如何用Python 实现 Python 解释器

    1. Python解释器 这里的Python解释器具体是指什么呢?有时候我们会把Python的REPL(命令行下Python的交互环境)当作解释器,有时候Python解释器这一说法可以指代整个Pyth ...

  6. python制作自动化办公_教你如何用Python制造一款自动化办公软件脚本!下班,下班...

    1 PySimpleGUI安装 在命令行/终端输入:pip install pysimplegui,等待安装完成后,进入python环境,输入import PySimpleGUI回车无误后,确认安装成 ...

  7. python画一个心形照片墙怎么摆_柚子教大家如何用python做精美的照片墙!五分钟学会get新技能...

    在朋友圈中你肯定会见到过下面这样的照片,由数张照片拼接成一张具有规则图案形状的照片墙. 其实这样的一张照片也可以用 Python 实现,主要用到的是 python 中的 Image 库:制作之前需要一 ...

  8. python 读取excel图片_如何用Python读取Excel中图片?

    公众号: 早起Python 作者:刘早起 大家好,在使用Python进行办公自动化操作时,一定少不了与Excel表格的交互,我们通常是用pandas处理表格数据,但大多数情况下,都是读取表格中的数值进 ...

  9. 怎么用python读取excel图_如何用Python读取Excel中图片?

    公众号: 早起Python 作者:刘早起 大家好,在使用Python进行办公自动化操作时,一定少不了与Excel表格的交互,我们通常是用pandas处理表格数据,但大多数情况下,都是读取表格中的数值进 ...

最新文章

  1. 10种Git技巧,让你省时省力又省心!
  2. 均线金叉 不破支撑BCH有望延续反弹
  3. typeorm_如何评价TypeORM?
  4. lisp 设计盘形齿轮铣刀_钨钢铣刀制造厂
  5. 归并排序验证性实验_性能优化技巧:有序归并
  6. 修改mysql数据存放路径
  7. opengl 如何加阴影_一步步学OpenGL(23) -《阴影贴图1》
  8. tensorflow学习笔记(1):使用入门
  9. 冰点下载器手机版apk_冰点文库下载器
  10. [转载] 计算机端口详解
  11. aliyun阿里云视频直播播放器代码
  12. 【笔记】更改windows,excel,word背景色为眼睛保护色
  13. 大数据、数据分析和数据挖掘的区别是什么
  14. HONOR Magicbook 进不了系统
  15. 《必然》 一书中120条书摘
  16. 公链洗牌进行时 |链捕手
  17. Problem B: 小度挑战赛
  18. Nginx报错Mixed Content: The page was loaded over HTTPS, This content should also be served over https
  19. MongoDB服务启动
  20. openfire安装配置

热门文章

  1. 统计字符串中出现频率最高的字母 C语言
  2. MySQL之——MySQL5.6 my.cnf 参数说明(附上自己服务器上真实配置文件)
  3. linux强行安装软件,linux软件安装
  4. 一小时刷完英语口语常用3000词汇(绿色护眼版)day10-词汇901-1000
  5. windows中快捷键和windows运行中命令
  6. EasyExcel 设置边框样式(线条类型和线条颜色)
  7. 跨平台大行其道 CocoaChina 2012年9月开发者大会落幕
  8. VBA提取PPT中的文字
  9. Android8.1 MTK平台 修改蓝牙默认名称
  10. JSP判断radio是否选择和传值栗子(测试应聘人员能力自动计算分数)