Excel Python:飞速搞定数据分析与处理 (【瑞士】费利克斯·朱姆斯坦) (Z-Library)
Author: 费利克斯•朱姆斯坦
商业
每当花上几小时手动更新Excel工作簿时,或者每当Excel工作簿因保存了太多数据而崩溃时,你都应该停下来,思考自己是否应该换个工作方式。本书将展示为什么在Excel中引入Python是明智之举——你将能够轻松突破Excel的瓶颈,避免人为错误,把更多宝贵的时间花在能产生更大价值的任务上。 在微软运营的在线用户反馈论坛上,大量用户提出希望“将Python作为Excel的脚本语言”。相比Excel现有的VBA语言,Python究竟有何优势,又该如何发挥这些优势?开源Python库xlwings的诞生很好地回答了这些问题,它让Excel和Python珠联璧合。作为xlwings的创始人,本书作者将展示如何借用Python的力量,让Excel快得飞起来!
📄 File Format:
PDF
💾 File Size:
11.9 MB
28
Views
0
Downloads
0.00
Total Donations
📄 Text Preview (First 20 pages)
ℹ️
Registered users can read the full content for free
Register as a Gaohf Library member to read the complete e-book online for free and enjoy a better reading experience.
📄 Page
1
(This page has no text content)
📄 Page
2
人 民 邮 电 出 版 社 北 京 Python for Excel [瑞士] 费利克斯·朱姆斯坦 著 冯黎 译 飞速搞定数据分析与处理 Excel+Python: Beijing • Boston • Farnham • Sebastopol • Tokyo O’Reilly Media, Inc.授权人民邮电出版社出版 图 灵 程 序 设 计 丛 书
📄 Page
3
内 容 提 要 在如今的时代,大型数据集唾手可得,含有数百万行的数据文件并不罕见。Python 是数据 分析师和数据科学家的首选语言。通过本书,即使完全不了解 Python,Excel 用户也能够学会用 Python 将烦琐的任务自动化,显著地提高办公效率,并利用 Python 在数据分析和科学计算方面 的突出优势,轻松搞定 Excel 任务。你将学习如何用 pandas 替代 Excel 函数,以及如何用自动 化 Python 库替代 VBA 宏和用户定义函数等。 本书既适合 Excel 用户阅读,也适合 Python 用户阅读。 定价:89.80元 读者服务热线:(010)84084456-6009 印装质量热线:(010)81055316 反盗版热线:(010)81055315 广告经营许可证:京东市监广登字 20170147 号 著 [瑞士] 费利克斯 • 朱姆斯坦 译 冯 黎 责任编辑 张海艳 责任印制 彭志环 人民邮电出版社出版发行 北京市丰台区成寿寺路11号 邮编 100164 电子邮件 315@ptpress.com.cn 网址 https://www.ptpress.com.cn 北京 印刷 开本:800×1000 1/16 印张:17.5 2022年 3 月第 1 版 字数:414千字 2022年 3 月北京第 1 次印刷 著作权合同登记号 图字:01-2021-2126号 ◆ ◆ ◆
📄 Page
4
版权声明 Copyright © 2021 Zoomer Analytics LLC. All rights reserved. Simplified Chinese edition, jointly published by O’Reilly Media, Inc. and Posts & Telecom Press, 2022. Authorized translation of the English edition, 2022 O’Reilly Media, Inc., the owner of all rights to publish and sell the same. All rights reserved including the rights of reproduction in whole or in part in any form. 英文原版由 O’Reilly Media, Inc. 出版,2021。 简体中文版由人民邮电出版社有限公司出版,2022。英文原版的翻译得到 O’Reilly Media, Inc. 的授权。此简体中文版的出版和销售得到出版权和销售权的所有者——O’Reilly Media, Inc. 的许可。 版权所有,未得书面许可,本书的任何部分和全部不得以任何形式重制。
📄 Page
5
O’Reilly 以“分享创新知识、改变世界”为己任。40 多年来我们一直向企业、个人提供成 功所必需之技能及思想,激励他们创新并做得更好。 O’Reilly 业务的核心是独特的专家及创新者网络,众多专家及创新者通过我们分享知识。我 们的在线学习(Online Learning)平台提供独家的直播培训、图书及视频,使客户更容易获 取业务成功所需的专业知识。几十年来 O’Reilly 图书一直被视为学习开创未来之技术的权 威资料。我们每年举办的诸多会议是活跃的技术人员聚会场所,来自各领域的专业人士在 此建立联系,讨论最佳实践并发现可能影响技术行业未来的新趋势。 我们的客户渴望做出推动世界前进的创新之举,我们希望能助他们一臂之力。 业界评论 “O’Reilly Radar 博客有口皆碑。” ——Wired “O’Reilly 凭借一系列非凡想法(真希望当初我也想到了)建立了数百万美元的业务。” ——Business 2.0 “O’Reilly Conference 是聚集关键思想领袖的绝对典范。” ——CRN “一本 O’Reilly 的书就代表一个有用、有前途、需要学习的主题。” ——Irish Times “Tim 是位特立独行的商人,他不光放眼于最长远、最广阔的领域,并且切实地按照 Yogi Berra 的建议去做了:‘如果你在路上遇到岔路口,那就走小路。’回顾过去,Tim 似乎每一次都选择了小路,而且有几次都是一闪即逝的机会,尽管大路也不错。” ——Linux Journal O’Reilly Media, Inc.介绍
📄 Page
6
本书赞誉 Python 可以为 Excel 做些什么?如果你经历过工作簿意外崩溃、计算出错,并且需要执行 枯燥的手动操作,那么肯定想知道这个问题的答案。这本书是为工作表软件用户准备的一 本全面又简明扼要的 Python 入门指南。不要因为害怕学习编程就避而远之,费利克斯为学 习 Python 提供了一个极佳的切入点,即便是经验丰富的程序员也能从中获益。同时,他将 这本书的内容进行了合理的编排,使得像你一样的 Excel 用户更易于理解和应用。你很快 就会发现,作者经验丰富,有着多年的教学和实践经验,可以指导人们如何在 Python 的帮 助下最大化地发挥 Excel 的能力。如果你想知道 Excel 结合 Python 有何潜能,那么费利克 斯是回答这个问题的不二人选。希望你能像我一样喜欢这堂大师课程。 ——George Mount,Stringfest Analytics 创始人 从 Excel 到 Python 是一种自然的过渡,并且 Python 会让人想要直接丢掉 Excel。虽然这种 想法很吸引人,但是要直接丢掉 Excel 还是不那么现实。Excel 不会消失,它会作为一种用 途广泛的桌面工具持续存在于企业和家庭中。这本书架起了连接这两个世界的桥梁。书中 解释了你应该如何将 Python 集成到 Excel 中,以及如何从躲都躲不掉的巨型工作簿、上千 个公式、奇形怪状的 VBA 代码中解脱。这本书可能是我读过的关于 Excel 的书之中最有用 的一本,并且是每一位高级 Excel 用户的必读书目。强烈推荐! ——Andreas F. Clenow,Acies Asset Management 首席信息官, 畅销书《趋势交易》《趋势永存》以及 Trading Evolved 的作者 Excel 一直是金融界的基础性工具,但是有大量的 Excel 应用程序用处不大。这本书很好地 教会了读者如何在 xlwings 的帮助下构建更优秀、更健壮的 Excel 应用程序。 ——Werner Brönnimann,金融衍生品和去中心化金融从业者, Ubinetic AG 联合创始人
📄 Page
7
Excel 和 Python 是商业分析工具箱中最重要的两种工具,将两者结合可谓珠联璧合。在这 本书中,费利克斯 • 朱姆斯坦利用各种开源、跨平台的解决方案,展现了他在结合 Python 和 Excel 方面过人的精湛技艺。对于商业分析师、数据科学家,以及每一位希望将 Excel 的能力注入代码中的 Python 用户来说,这本书都是他们的无价之宝。 ——Daniel Guetta,哥伦比亚大学商学院职业训练专业副教授, 商业分析计划主任,Python for MBAs 合著者
📄 Page
8
vii 目录 第一部分 Python 入门 第 1 章 为什么要用 Python 为 Excel 编程 .................................................................................3 1.1 Excel 作为一门编程语言 ...........................................................................................................4 1.1.1 新闻中的 Excel ..............................................................................................................5 1.1.2 编程最佳实践 ................................................................................................................5 1.1.3 现代 Excel ....................................................................................................................10 1.2 用在 Excel 上的 Python ...........................................................................................................11 1.2.1 可读性和可维护性 ......................................................................................................11 1.2.2 标准库和包管理器 ......................................................................................................12 1.2.3 科学计算 ......................................................................................................................13 1.2.4 现代语言特性 ..............................................................................................................14 1.2.5 跨平台兼容性 ..............................................................................................................15 1.3 小结 ...........................................................................................................................................15 第 2 章 开发环境 ..............................................................................................................................17 2.1 Anaconda Python 发行版 ..........................................................................................................18 2.1.1 安装 ..............................................................................................................................18 2.1.2 Anaconda Prompt ..........................................................................................................19 2.1.3 Python REPL:交互式 Python 会话 ...........................................................................21 2.1.4 包管理器:Conda 和 pip .............................................................................................22 前言 ........................................................................................................................................................xiii
📄 Page
9
viii | 目录 2.1.5 Conda 环境 ...................................................................................................................24 2.2 Jupyter 笔记本 ..........................................................................................................................24 2.2.1 运行 Jupyter 笔记本 .....................................................................................................25 2.2.2 笔记本单元格 ..............................................................................................................26 2.2.3 编辑模式与命令模式 ..................................................................................................28 2.2.4 执行顺序很重要 ..........................................................................................................28 2.2.5 关闭 Jupyter 笔记本 .....................................................................................................28 2.3 VS Code ....................................................................................................................................30 2.3.1 安装和配置 ..................................................................................................................31 2.3.2 执行 Python 脚本 .........................................................................................................33 2.4 小结 ...........................................................................................................................................36 第 3 章 Python 入门 ........................................................................................................................37 3.1 数据类型 ...................................................................................................................................37 3.1.1 对象 ..............................................................................................................................38 3.1.2 数值类型 ......................................................................................................................39 3.1.3 布尔值 ..........................................................................................................................41 3.1.4 字符串 ..........................................................................................................................42 3.2 索引和切片 ...............................................................................................................................43 3.2.1 索引 ..............................................................................................................................43 3.2.2 切片 ..............................................................................................................................44 3.3 数据结构 ...................................................................................................................................45 3.3.1 列表 ..............................................................................................................................45 3.3.2 字典 ..............................................................................................................................47 3.3.3 元组 ..............................................................................................................................49 3.3.4 集合 ..............................................................................................................................49 3.4 控制流 .......................................................................................................................................50 3.4.1 代码块和 pass 语句 .....................................................................................................50 3.4.2 if 语句和条件表达式 ..................................................................................................51 3.4.3 for 循环和 while 循环 ................................................................................................52 3.4.4 列表、字典和集合推导式 ..........................................................................................55 3.5 组织代码 ...................................................................................................................................56 3.5.1 函数 ..............................................................................................................................56 3.5.2 模块和 import 语句 .....................................................................................................57 3.5.3 datetime 类 ..................................................................................................................59 3.6 PEP 8:Python 风格指南 .........................................................................................................61 3.6.1 PEP 8 和 VS Code ........................................................................................................62
📄 Page
10
目录 | ix 3.6.2 类型提示 ......................................................................................................................63 3.7 小结 ...........................................................................................................................................64 第二部分 pandas 入门 第 4 章 NumPy 基础 .......................................................................................................................67 4.1 NumPy 入门 ..............................................................................................................................67 4.1.1 NumPy 数组 .................................................................................................................67 4.1.2 向量化和广播 ..............................................................................................................69 4.1.3 通用函数 ......................................................................................................................70 4.2 创建和操作数组 .......................................................................................................................71 4.2.1 存取元素 ......................................................................................................................71 4.2.2 方便的数组构造器 ......................................................................................................72 4.2.3 视图和副本 ..................................................................................................................73 4.3 小结 ...........................................................................................................................................73 第 5 章 使用 pandas 进行数据分析 ...........................................................................................74 5.1 DataFrame 和 Series .................................................................................................................74 5.1.1 索引 ..............................................................................................................................76 5.1.2 列 ..................................................................................................................................79 5.2 数据操作 ...................................................................................................................................80 5.2.1 选取数据 ......................................................................................................................80 5.2.2 设置数据 ......................................................................................................................85 5.2.3 缺失数据 ......................................................................................................................87 5.2.4 重复数据 ......................................................................................................................89 5.2.5 算术运算 ......................................................................................................................90 5.2.6 处理文本列 ..................................................................................................................91 5.2.7 应用函数 ......................................................................................................................92 5.2.8 视图和副本 ..................................................................................................................93 5.3 组合 DataFrame ........................................................................................................................94 5.3.1 连接 ..............................................................................................................................94 5.3.2 连接和合并 ..................................................................................................................95 5.4 描述性统计量和数据聚合 .......................................................................................................97 5.4.1 描述性统计量 ..............................................................................................................97 5.4.2 分组 ..............................................................................................................................98 5.4.3 透视和熔化 ..................................................................................................................99 5.5 绘图 .........................................................................................................................................100
📄 Page
11
x | 目录 5.5.1 Matplotlib....................................................................................................................100 5.5.2 Plotly ...........................................................................................................................102 5.6 导入和导出 DataFrame ..........................................................................................................104 5.6.1 导出 CSV 文件 ...........................................................................................................105 5.6.2 导入 CSV 文件 ...........................................................................................................106 5.7 小结 .........................................................................................................................................107 第 6 章 使用 pandas 进行时序分析 .........................................................................................109 6.1 DatetimeIndex ........................................................................................................................110 6.1.1 创建 DatetimeIndex ...................................................................................................110 6.1.2 筛选 DatetimeIndex ...................................................................................................112 6.1.3 处理时区 ....................................................................................................................113 6.2 常见时序操作 .........................................................................................................................114 6.2.1 移动和百分比变化率 ................................................................................................114 6.2.2 基数的更改和相关性 ................................................................................................116 6.2.3 重新采样 ....................................................................................................................118 6.2.4 滚动窗口 ....................................................................................................................119 6.3 pandas 的局限性 .....................................................................................................................120 6.4 小结 .........................................................................................................................................121 第三部分 在 Excel 之外读写 Excel 文件 第 7 章 使用 pandas 操作 Excel 文件 .....................................................................................125 7.1 案例研究:Excel 报表 ...........................................................................................................125 7.2 使用 pandas 读写 Excel 文件 .................................................................................................128 7.2.1 read_excel 函数和 ExcelFile 类..............................................................................128 7.2.2 to_excel 方法和 ExcelWriter 类..............................................................................133 7.3 使用 pandas 处理 Excel 文件的局限性 .................................................................................134 7.4 小结 .........................................................................................................................................135 第 8 章 使用读写包操作 Excel 文件 ........................................................................................136 8.1 读写包 .....................................................................................................................................136 8.1.1 何时使用何种包 ........................................................................................................137 8.1.2 excel.py 模块 ............................................................................................................138 8.1.3 OpenPyXL ..................................................................................................................139 8.1.4 XlsxWriter ...................................................................................................................143 8.1.5 pyxlsb ..........................................................................................................................145 8.1.6 xlrd、xlwt 和 xlutils ...................................................................................................146
📄 Page
12
目录 | xi 8.2 读写包的高级主题 .................................................................................................................149 8.2.1 处理大型 Excel 文件 .................................................................................................149 8.2.2 调整 DataFrame 在 Excel 中的格式 ..........................................................................152 8.2.3 案例研究(复习):Excel 报表 ...............................................................................157 8.3 小结 .........................................................................................................................................158 第四部分 使用 xlwings 对 Excel 应用程序进行编程 第 9 章 Excel 自动化 ....................................................................................................................161 9.1 开始使用 xlwings ...................................................................................................................162 9.1.1 将 Excel 用作数据查看器 .........................................................................................162 9.1.2 Excel 对象模型 ..........................................................................................................163 9.1.3 运行 VBA 代码 ..........................................................................................................170 9.2 转换器、选项和集合 .............................................................................................................170 9.2.1 处理 DataFrame ..........................................................................................................171 9.2.2 转换器和选项 ............................................................................................................172 9.2.3 图表、图片和已定义名称 ........................................................................................174 9.2.4 案例研究(再次回顾):Excel 报表 .......................................................................177 9.3 高级 xlwings 主题 ..................................................................................................................179 9.3.1 xlwings 的基础 ...........................................................................................................179 9.3.2 提升性能 ....................................................................................................................180 9.3.3 如何弥补缺失的功能 ................................................................................................181 9.4 小结 .........................................................................................................................................182 第 10 章 Python 驱动的 Excel 工具 .........................................................................................183 10.1 利用 xlwings 将 Excel 用作前端 .........................................................................................183 10.1.1 Excel 插件 ..............................................................................................................184 10.1.2 quickstart 命令 .....................................................................................................185 10.1.3 Run main .................................................................................................................186 10.1.4 RunPython 函数.......................................................................................................187 10.2 部署 .......................................................................................................................................191 10.2.1 Python 依赖 ............................................................................................................191 10.2.2 独立工作簿:脱离 xlwings 插件 ..........................................................................191 10.2.3 配置的层次关系.....................................................................................................192 10.2.4 设置.........................................................................................................................193 10.3 小结 .......................................................................................................................................194
📄 Page
13
xii | 目录 第 11 章 Python 包追踪器 ..........................................................................................................195 11.1 构建什么样的应用程序 .......................................................................................................195 11.2 核心功能 ...............................................................................................................................197 11.2.1 Web API ..................................................................................................................198 11.2.2 数据库 .....................................................................................................................201 11.2.3 异常 .........................................................................................................................208 11.3 应用程序架构 .......................................................................................................................210 11.3.1 前端 .........................................................................................................................211 11.3.2 后端 .........................................................................................................................215 11.3.3 调试 .........................................................................................................................217 11.4 小结 .......................................................................................................................................219 第 12 章 用户定义函数 ................................................................................................................220 12.1 UDF 入门 ..............................................................................................................................220 12.2 案例研究:Google Trends ...................................................................................................225 12.2.1 Google Trends 简介 ................................................................................................225 12.2.2 使用 DataFrame 和动态数组 .................................................................................226 12.2.3 从 Google Trends 上获取数据 ...............................................................................231 12.2.4 使用 UDF 绘制图表...............................................................................................234 12.2.5 调试 UDF................................................................................................................236 12.3 高级 UDF 主题 .....................................................................................................................238 12.3.1 基础性能优化.........................................................................................................238 12.3.2 缓存.........................................................................................................................240 12.3.3 sub 装饰器 ..............................................................................................................242 12.4 小结 .......................................................................................................................................243 附录 A Conda 环境 .......................................................................................................................245 附录 B 高级 VS Code 功能 ........................................................................................................248 附录 C 高级 Python 概念 ............................................................................................................253
📄 Page
14
前言 微软在 UserVoice 上运营着一个反馈论坛,每个人都可以在这里提交新点子供他人投票。 票数最高的功能请求是“将 Python 作为 Excel 的一门脚本语言”,其得票数差不多是第二 名的两倍。尽管自 2015 年这个点子发布以来并没有什么实质性进展,但在 2020 年年末, Python 之父 Guido van Rossum 发布推文称“退休太无聊了”,他将会加入微软。此事令 Excel 用户重燃希望。我不知道他的举动是否影响了 Excel 和 Python 的集成,但我清楚的 是,为何人们迫切需要结合 Excel 和 Python 的力量,而你又应当如何从今天开始将两者结 合起来。总之,这就是本书的主要内容。 我撰写本书的原动力在于这样一个事实:我们生活在一个充满数据的世界之中。如今,庞 大的数据集涉及各个领域,可供任何人访问。而这些数据集常常大到一张工作表难以容 纳。几年前,我们可能称其为“大数据”,但现在有几十万行的数据也并不算稀奇。Excel 为了跟上潮流也进行了相应的改进:引入了用于加载和清理无法放进工作表的数据的 Power Query,以及用于进行数据分析并呈现结果的 Power Pivot 插件。Power Query 建立 在 M 公式语言(简称 M)的基础上,Power Pivot 则通过数据分析表达式(data analysis expression,简称 DAX)定义公式。如果想对 Excel 进行自动化,就要使用 Excel 内置的自 动化语言——Visual Basic for Application(VBA)。也就是说,即便要做一些相当简单的工 作,你也可能会用到 VBA、M 和 DAX。问题在于,这 3 种语言只能在微软的工具中为你 服务,特别是对于 Excel 和 Power BI 来说(第 1 章会简要介绍 Power BI)。 而 Python 就不一样了,它是一门通用编程语言,并且已然成为最受分析师和数据科学家青 睐的编程语言。如果把 Python 用到 Excel 上,那么你在各方面都能体会到 Python 带来的好 处,无论是自动化 Excel,访问、准备数据集,还是执行数据分析、可视化数据。最重要的 是,你可以在 Excel 之外重用你的 Python 技能。如果需要更高的算力,那么你可以轻易地 将量化模型、模拟、机器学习应用程序迁移到云上——云端有无穷的计算资源在等着你。 xiii
📄 Page
15
xiv | 前言 写作初衷 xlwings 是一个 Excel 自动化软件包,本书第四部分会对其进行介绍。在从事 xlwings 开发 期间,无论是通过 GitHub 问题跟踪页,还是 Stack Overflow 上的问题,甚至是通过线下的 各类大会,我都以各种方式与大量为了 Excel 而使用 Python 的用户保持着密切联系。 经常会有人让我推荐一些 Python 入门教程。虽然 Python 入门教程到处都有,但是这些教 程要么太宽泛(没有讲任何关于数据分析的内容),要么太专业(全是关于科学原理的内 容)。然而 Excel 用户往往处在一个中间位置:他们的确是和数据打交道,但是科学原理对 于他们来说可能又太专业了。他们常常有一些现有教程无法满足的特殊需求,举例如下: • 为完成某个任务,我应该用哪个 Python-Excel 包? • 我如何将 Power Query 数据库连接迁移到 Python? • Excel 中的 AutoFilter 和数据透视表在 Python 中对应的是什么? 我撰写本书的目的就是让你从对 Python 一无所知,到能够灵活运用 Python 的数据分析和 科学计算工具。 目标读者 如果你是 Excel 高级用户,并且想利用一门现代编程语言突破 Excel 的极限,那么本书就 是为你而写的。一般来说,“Excel 高级用户”每个月都会花几小时下载、清理、复制和粘 贴大量数据到关键的工作表中。当然,有很多方法可以突破 Excel 的极限,但本书会着重 于用 Python 来完成。 你应当对编程有基本的了解。如果你写过函数或 for 循环(无论是用哪种编程语言写的), 并且明白整型和字符串是什么,那么这些经验对阅读本书会有一定帮助。如果你已经习惯 于编写复杂的单元格公式或者有调整 VBA 宏的经历,那么你应该可以完全掌握本书的内 容。阅读本书无须任何针对 Python 的经验,我会简要介绍我们要用到的工具,其中也包括 对 Python 本身的介绍。 如果你是 VBA 老手,那么书中经常出现的对比 Python 和 VBA 的内容可以帮助你避开一 些常见的陷阱,从而快速上手。 如果你是 Python 开发者,并且需要了解 Python 有哪些处理 Excel 程序和文件的方式,从 而为满足商业用户的需求选择合适的软件包,那么本书也是值得一看的。 本书内容结构 本书分为 4 个部分。
📄 Page
16
前言 | xv 第一部分 Python 入门 在介绍本书要用到的工具之前,我们首先会看看为什么 Python 能成为 Excel 的好搭档。随 后,第一部分会介绍 Anaconda Python 发行版、Visual Studio Code 和 Jupyter 笔记本。在这 一部分中,我会教给你足够的 Python 知识,以便你掌握本书的剩余部分。 第二部分 pandas 入门 pandas 是值得信赖的 Python 数据分析库。我们会了解如何利用 Jupyter 笔记本和 pandas 来 替代 Excel 工作簿。pandas 的代码通常更易于维护,并且效率比 Excel 工作簿更高。不仅 如此,你还可以用它来操作一张工作表放不下的数据集。和 Excel 不同,pandas 让你的代 码可以在任何环境中运行,包括云端。 第三部分 在 Excel 之外读写 Excel 文件 这一部分讲的是如何运用 Python 包来操作 Excel 文件,比如 pandas、OpenPyXL、XlsxWriter、 pyxlsb、xlrd 和 xlwt。这些包能够代替 Excel 直接读写磁盘上的 Excel 工作簿,也就是说, 你不需要实际安装 Excel 就能进行这些操作。这些包可以在任何支持 Python 的平台上工 作,包括 Windows、macOS 和 Linux。对于读取 Excel 文件的包来说,一个典型用例就是 每天早上你用它读取从其他公司或者外部系统发来的 Excel 文件中的数据,然后将这些数 据存储在数据库中。而对于写入 Excel 文件的包来说,你在各种应用程序中都能看到的 “导出为 Excel 文件”按钮,背后就是它的功劳。 第四部分 使用 xlwings 对 Excel 应用程序进行编程 在这一部分中,我们会看到如何使用 Python 和 xlwings 来自动化 Excel,而不是直接读写 磁盘上的 Excel 文件。因此,这部分内容需要你在本地安装好 Excel。我们会学习如何打开 Excel 工作簿并实际操作它们。除了通过 Excel 读写文件,我们还会构建一些交互式 Excel 工具,从而可以一键让 Python 执行一些过去你通过 VBA 宏来完成的工作(比如运算量 极大的计算)。另外,我们还将学习如何在 Python 中而不是在 VBA 中编写用户定义函数 1 (user-defined function,UDF)。 理解读写 Excel“文件”(第三部分)和对 Excel“应用程序”进行编程(第四部分)之间 的基本区别非常重要。它们的关系如图 P-1 所示。 第四部分 第三部分 pandas、OpenPyXL、XlsxWriter、 pyxlsb、xlrd 和 xlwt 图 P-1:读写 Excel 文件(第三部分)和对 Excel 应用程序进行编程(第四部分) 注 1: 微软已经开始使用自定义函数(custom function)这一术语来替代 UDF。本书还是会称其为 UDF。
📄 Page
17
xvi | 前言 学习第三部分无须安装 Excel,所有的程序都可以在支持 Python 的平台(主要是 Windows、 macOS 和 Linux)上运行。不过由于第四部分中的程序依赖于本地安装的 Microsoft Excel, 因此这些代码只能在支持 Microsoft Excel 的平台(Windows 和 macOS)上运行。 Python和Excel的版本 本书内容基于 Python 3.8。在撰写本书时,这是最新版本的 Anaconda Python 发行版所用的 版本。如果你想用更新版本的 Python,请参照本书主页(https://xlwings.org/book)上的说 明。不过,千万不要使用低于 3.8 的版本。如果有些东西在 Python 3.9 上不一样,我会适 时指出。 本书还需要你使用比较新的 Excel 版本,在 Windows 中至少需要 Excel 2007,对于 macOS 则 是 Excel 2016 以上的版本。本地安装的 Microsoft 365 中包含的 Excel 也适用于本书——我甚 至更推荐使用 365 版本,因为它有其他版本所没有的一些最新功能。在撰写本书时,我用的 正是 365 版本,如果你用的是其他版本的 Excel,那么有些菜单项的名称和位置可能会不同。 排版约定 本书使用下列排版约定。 y 黑体字 表示新术语或重点强调的内容。 y 等宽字体(constant width) 表示程序片段,以及正文中出现的变量名、函数名和数据类型。 y 等宽粗体(constant width bold) 表示应该由用户输入的命令或其他文本。 y 等宽斜体(constant width italic) 表示应该由用户输入的值或根据上下文确定的值替换的文本。 该图标表示提示或建议。 该图标表示一般性注记。
📄 Page
18
前言 | xvii 该图标表示警告或警示。 使用示例代码 我在本书网页上维护着关于本书的额外帮助信息。请一定去看一看,特别是当你遇到问题 的时候。 补充材料(如代码、练习等)可以在这里下载:https://github.com/fzumstein/python-for- excel。要下载配套代码库,请点击绿色的 Code 按钮,然后选择 Download ZIP。下载完成之 后,在 Windows 中右键单击文件,选择“全部解压”将里面的文件解压到一个文件夹中。 在 macOS 中,双击文件解压即可。如果你知道怎么用 Git,也可以用 Git 将代码库克隆到 本地。你可以随便把它放在哪里,但我时常会像下面这样引用这些文件: C:\Users\username\python-for-excel 如果你在 Windows 中下载并解压了上述 ZIP 文件,则会得到类似下面这样的文件夹结构 (注意重复的文件夹名称): C:\...\Downloads\python-for-excel-1st-edition\python-for-excel-1st-edition 将这个文件夹中的内容复制到 C:\Users\<username>\python-for-excel 文件夹中以便跟进本 书学习。以上操作也适用于 macOS,只是要将这些内容复制到 /Users/<username>/python- for-excel 中。 本书旨在帮助你完成工作。一般来说,你可以在自己的程序或文档中使用本书提供的示例 代码。除非需要复制大量代码,否则无须联系我们获得许可。比如,使用本书中的几个代 码片段编写程序无须获得许可,销售或分发 O’Reilly 图书的示例光盘则需要获得许可;引 用本书中的示例代码回答问题无须获得许可,将本书中的大量示例代码放到你的产品文档 中则需要获得许可。 我们很希望但并不强制要求你在引用本书内容时加上引用说明。引用说明通常包括书名、 作者、出版社和 ISBN,比如“Python for Excel, by Felix Zumstein (O’Reilly). Copyright 2021 Zoomer Analytics LLC, 978-1-492-08100-5”。 如果你觉得自己对示例代码的用法超出了上述许可的范围,欢迎你通过 permissions@ oreilly.com 与我们联系。
📄 Page
19
xviii | 前言 O’Reilly在线学习平台(O’Reilly Online Learning) 40 多年来,O’Reilly Media 致力于提供技术和商业培训、知识和 卓越见解,来帮助众多公司取得成功。 我们拥有独特的由专家和创新者组成的庞大网络,他们通过图书、文章、会议和我们的在 线学习平台分享他们的知识和经验。O’Reilly 的在线学习平台让你能够按需访问现场培训 课程、深入的学习路径、交互式编程环境,以及 O’Reilly 和 200 多家其他出版商提供的大 量文本资源和视频资源。有关的更多信息,请访问 https://www.oreilly.com。 联系我们 请把对本书的评价和问题发给出版社。 美国: O’Reilly Media, Inc. 1005 Gravenstein Highway North Sebastopol, CA 95472 中国: 北京市西城区西直门南大街 2 号成铭大厦 C 座 807 室(100035) 奥莱利技术咨询(北京)有限公司 O’Reilly 的每一本书都有专属网页,你可以在那儿找到本书的相关信息,包括勘误表、示 例代码以及其他信息 2。本书的网页是 https://oreil.ly/py4excel。 对于本书的评论和技术性问题,请发送电子邮件到 bookquestions@oreilly.com。 要了解更多 O’Reilly 图书、培训课程和新闻的信息,请访问以下网站:https://www.oreilly.com。 我们在 Facebook 的地址如下:http://facebook.com/oreilly。 请关注我们的 Twitter 动态:http://twitter.com/oreillymedia。 我们的 YouTube 视频地址如下:http://www.youtube.com/oreillymedia。 致谢 这是我第一次写书,我十分感谢一路上帮助我的各位,他们帮我渡过了许多难关! 首先感谢 O’Reilly 的编辑 Melissa Potter,她帮我保持充足的动力,按计划完成了本书。我 注 2: 也可以通过图灵社区下载示例代码或提交中文版勘误:ituring.cn/book/2933。——编者注
📄 Page
20
前言 | xix 也要感谢 Michelle Smith,她和我一起完成了本书的初稿。还要感谢 Daniel Elfanbaum,他 总是乐于回答我提出的技术问题。 万分感谢我的同事、朋友以及客户,他们花大量时间阅读了本书的早期版本。正是有了他 们的反馈,本书才能变得更加易懂,并且书中的一些案例研究都是来自他们分享的源自现 实的 Excel 问题。感谢 Adam Rodriguez、 Mano Beeslar、Simon Schiegg、Rui Da Costa、Jürg Nager 和 Christophe de Montrichard。 我也十分感谢 Felipe Maion、Ray Doue、Kolyu Minevski、Scott Drummond、Volker Roth 和 David Ruggles。他们阅读了发布在 O’Reilly 在线学习平台的抢先发布版本,我对他们提供 的反馈表示感谢。谢谢你们! 本书有幸得到了各位高级技术审校人员的审阅,我十分感谢他们在有限时间中的辛勤付 出。感谢以下各位的帮助:Jordan Goldmeier、George Mount、Andreas Clenow、Werner Brönnimann 和 Eric Moreira。 特别感谢 Björn Stiel。他不仅是一位技术审校,我还从他那里学到了很多关于书中那些技 术的知识。我十分享受与他共事的日子! 最后,我想对 Eric Reynolds 表示感谢,他于 2016 年将他的 ExcelPython 项目合并到 xlwings 代码库中。他还从头开始重新设计了整个包,彻底修改了我早期编写的糟糕的 API。 十分 感谢! 电子书 扫描如下二维码,即可购买本书中文版电子版。
The above is a preview of the first 20 pages. Register to read the complete e-book.