全文共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 Librariesimport pandas as pdfromopenpyxl import load_workbookfrom openpyxl.styles importFontfrom openpyxl.chart importBarChart, Reference

你使用如下两个Librariy:

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

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

加载数据

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

#Section 2 - Loading our Datadf = 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 Tablesfiltered= 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 Workbookfile_path=#Path to where you want your file savedquarterly_sales.to_excel(file_path, sheet_name ='Quarterly Sales', startrow=3)

这一步是在做什么:

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

· 使用ExcelWriter保存文件

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

使报表更漂亮

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

#Section 05 - Loading the Workbookwb =load_workbook(file_path)sheet1= wb['Quarterly Sales']# Section 06 - Formatting the First Sheetsheet1['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 Chartbar_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=3wb.save(filename = file_path)

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

而Section 6中操作更多:

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

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

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

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

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

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

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

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

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

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

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

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

#Section 08 - Getting Region Namesregions =list(df['Region'].unique())# Section 09 - Looping Over All Regionsfolder_path=#Insert the path to the folder you want tosave the reports infor 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.title='Sales by Type'bar_chart.style =3

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

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

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

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

图源:unsplash

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

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

我们一起分享AI学习与发展的干货
欢迎关注全平台AI垂类自媒体 “读芯术”

(添加小编微信:dxsxbb,加入读者圈,一起讨论最新鲜的人工智能科技哦~)

从Excel中解救你!如何用Python实现报表自动化相关推荐

  1. python excelwriter保存路径_从Excel中解救你!如何用Python实现报表自动化

    全文共2391字,预计学习时长14分钟 图源:morioh 工作中,无穷无尽的表格有时会令人抓狂.Excel无处不在,即便有着像Python这样的强大工具任你使用,你也难以从中逃脱. 也许你的老板和同 ...

  2. python 自动化出报表,python实现报表自动化详解

    本篇文章将介绍: xlwt 常用功能 xlrd 常用功能 xlutils 常用功能 xlwt写Excel时公式的应用 xlwt写入特定目录(路径设置) xlwt Python语言中,写入Excel文件 ...

  3. vb.net读取excel并写入dgv_如何用Python读取Excel中的图片?然后写入图片?

    大家好,在使用Python进行办公自动化操作时,一定少不了与Excel表格的交互,我们通常是用pandas处理表格数据,但大多数情况下,都是读取表格中的数值进行分析. 那么你知道如何使用Python读 ...

  4. asp.net 设置 excel alignment_教你如何用Python轻轻松松操作Excel、Word、CSV,一文就够了,赶紧码住!!!...

    作者:奈何缘浅wyj https://juejin.im/post/6868073137263607821 Python 操作 Excel 常用工具 数据处理是 Python 的一大应用场景,而 Ex ...

  5. python删除excel第一行_如何用 Python 清洗数据?

    林骥的第 38 篇文章 0. 序言在做数据分析之前,我们首先要明确数据分析的目标,然后应用数据分析的思维,对目标进行细分,再采取相应的行动.我们可以把数据分析细分为以下 8 个步骤:(1)读取(2)清 ...

  6. python怎么编辑excel_python 修改excel表格数据-关于如何用python 编辑 excel表格

    python对Excel中数据的处理 把你的写入excel 的内容编码一哈 例如 str('内容').encode('utf-8') 或者str('内容').encode('gbk') 再写入exce ...

  7. asp.net 设置 excel alignment_教你如何用python轻轻松松操作Excel、Word、CSV,一文就够了,赶紧码住!!!

    Python 操作 Excel 常用工具 数据处理是 Python 的一大应用场景,而 Excel 又是当前最流行的数据处理软件.因此用 Python 进行数据处理时,很容易会和 Excel 打起交道 ...

  8. python怎么合并多个excel表 视频_()如何用python合并两个excel表格

    ()如何用python合并两个excel表格 python合并excel表格视频教程2020-09-25 04:04:33人已围观 python实现excel合并 Created on Mon Mar ...

  9. python3读取excel某一列_怎样用python,读取excel中的一列数据!python读取excel某一列数据...

    Python 如何循环读取csv或者excel中的一列数据,写入到中搜索 是可以 a.csv复制到 b.csv中 import csv def foo(): with open('a.csv', 'r ...

最新文章

  1. 服务器显示接口类型,查看服务器各接口卡情况的命令是:lspci
  2. 希尔排序的理解和实现(Java)
  3. WebApi跨域的解决方法
  4. Java 多维数组遍历
  5. JTable调整列宽
  6. html中如何实现选择存储路径的功能_16687.VSM006分解03_如何打开HTML内嵌图像存储位置...
  7. sudo rosdep init ERROR: cannot download default sources list from: https://raw.githubusercontent.com
  8. Cef mysql.exe_CEF3.2623使用记录:windows编译
  9. PHPStorm IDE 快捷键(MAC)
  10. 模板设计模式_设计模式实用又简单的模板模式
  11. 免校准的电量计量芯片_电能计量芯片应用心得之选型篇
  12. 啊哈C语言-20220823学习练习
  13. [Pandas] 数据合并 pd.merge
  14. 怎么用matlab保存音频文件,Matlab用图片和音频藏文件(续)
  15. 国庆拥堵现象说明了什么?
  16. Invalid default value for ‘updated_at‘
  17. 第一次考CSP(第27次CCF计算机软件能力认证)
  18. python做马尔科夫模型预测法_python 日常笔记 hmmlearn 隐性马尔科夫模型案例分析...
  19. 微信小程序富文本插件mp-html
  20. helm create configmap error: ConfigMap in version “v1“ cannot be handled as a ConfigMap

热门文章

  1. 数据可视化怎么选择图表
  2. 户籍不在本市并已申请基本养老保险或基本医疗保险关系转移手续销户提取业务办理指南(试行)...
  3. 考研英语 - word-list-28
  4. “封神台”靶场跑不了爆破,临时解决办法(亲测有效)
  5. java mysql 日志解析_otter4.2.17在解析日志时报错(mysql数据库版本为5.7.3-m13)
  6. 基于大数据的英语学习利器
  7. (仿超级课程表)结合MaterialSheetFab实现简单的课程表功能
  8. matlab word几级标题,完整word版,MATLAB符号运算
  9. Command——Windows
  10. G笔试题-2012年9月25日