为什么会有这本书

先说说这本书的来历。作者Felix Zumstein是xlwings这个开源库的创始人,xlwings是用来让Python和Excel对话的工具。第一版是2021年出的,过了五年出了第二版。这五年间发生了不少事——微软官方推出了Python in Excel功能,ChatGPT带火了AI,Copilot也进了Excel。所以第二版不是简单修修补补,而是加了三个新章节和一个附录,专门讲这些新东西。
书一共408页,分成六个部分。读完之后我的感觉是:这不是一本让你从头学Python的教材,而是一本告诉你“在Excel的场景里,Python到底能帮你干什么”的书。
第一部分:Python入门——为什么要学
书的第一部分讲的是最基础的东西:为什么要用Python处理Excel、怎么搭建开发环境、Python的基本语法。
有意思的是,作者在第一页就说了一个观点:「Excel本身就是一种编程语言」。你想想,你在单元格里写=SUM(A1:A4),这个单元格的值依赖其他单元格,其他单元格又依赖更前面的单元格——这不就是编程里的嵌套函数调用吗?2020年微软推出了LAMBDA函数,让Excel可以用自己的公式语言写可复用函数,Excel的产品负责人直接说这是让Excel成为“真正编程语言”的最后一块拼图。
但问题也在这里。大多数用Excel的人不是程序员,他们是交易员、会计师、工程师。他们的目标是解决业务问题,不太在意软件开发里那些“最佳实践”。于是Excel文件里经常出现的情况是:输入、计算、输出全混在一张表上,关键数据没有任何保护,别人拿到文件根本不知道哪一步该先做。
「VBA的尴尬」:Excel自带的自动化语言VBA早就停止进化了。而Python这边,科学计算生态越来越强——2005年NumPy出现,2008年pandas出现,Python逐渐成了数据科学领域的主流工具。作者说得很直白:Python对专业程序员和偶尔写几行代码的初学者都有吸引力。专业程序员喜欢它因为什么都能干,初学者喜欢它因为容易学。
还有一个细节我印象很深:Python强制你用缩进来表示代码块,VBA不强制。这意味着Python代码天生就比VBA代码更容易读、更容易维护。你想想,半年后回头看自己写的代码,缩进乱七八糟的VBA和结构清晰的Python,哪个更容易看懂?
第二部分:pandas入门——Excel的替代方案
第二部分讲NumPy和pandas。这是全书最核心的内容之一。
「NumPy是什么」:简单说,NumPy是Python里做科学计算的基础库。它最核心的东西叫“数组”(array),你可以把它理解成Excel里的一列数据或者一个区域。NumPy有两个重要概念:向量化和广播。向量化就是说,你可以对整个数组做操作,不用像Excel里那样把公式往下拖;广播是说不同形状的数组也能一起计算。这两个概念在pandas里也会反复用到。
「pandas是什么」:pandas是Python数据分析库,它的两个核心数据结构是Series(一维,类似Excel的一列)和DataFrame(二维,类似Excel的一张表)。pandas最大的优势是「向量化操作和数据对齐」。
举个例子。你在Excel里要对一列数据做清洗,可能要写一堆公式、拖来拖去。在pandas里,一行代码就能搞定。而且pandas处理几十万行数据的速度,Excel根本比不了。
书里介绍了pandas的完整工作流:清洗数据、准备数据、用聚合和描述性统计来理解数据、最后导入导出。还有两个重要的聚合方法:groupby和pivot_table——用过Excel数据透视表的人应该不陌生,pandas里也有类似的功能。
第三部分:Python in Excel——微软官方支持
这是第二版新增的重点内容。
以前要在Excel里用Python,得靠xlwings这样的第三方工具。现在微软自己把Python集成进了Excel。你在Excel的公式栏里输入=PY,就可以写Python代码了。代码在微软的云端运行,不需要你自己装Python环境。而且配合Copilot,就算你是Python新手,也能用自然语言让AI帮你写代码。
作者把时间序列分析这一章挪到了这部分。这样你可以直接在Excel里对比:同样一个时间序列分析任务,用Jupyter Notebook怎么做,用Python in Excel怎么做。这种对比学习的方式挺实用的。
第四、五部分:xlwings和xlwings Lite——把Excel变成Python的前端
第四部分讲xlwings,第五部分讲xlwings Lite。
「xlwings」是作者自己创建的开源库,作用是让Python和Excel互相调用。你可以用Python读写Excel文件,也可以在Excel里运行Python代码,甚至可以把Excel当成Python程序的界面——点一下按钮就执行一段Python脚本。xlwings支持Windows和macOS。
「xlwings Lite」是第二版新增的内容。它的特点是不用本地安装Python——Python直接在浏览器里运行(通过WebAssembly技术)。你从Excel的加载项商店安装xlwings Lite就行,代码存在工作簿里,打开就能用。支持Windows、macOS,甚至Excel网页版。
这个对很多人来说是个好消息。以前你要用Python处理Excel,得先装Python、装库、配环境,很多人卡在这一步就放弃了。xlwings Lite把这些都省了。
第六部分:不打开Excel读写文件
第六部分讲的是不用打开Excel就能读写Excel文件的方法。
有时候你不需要打开Excel界面,只是想批量处理一批文件——比如把100个Excel文件合并成一个。这时候用pandas或者openpyxl直接操作文件,比打开Excel一个个处理快得多。
这部分被作者放到了最后。他说这样安排的好处是:前面几部分讲的都是“在Excel应用里和Python交互”,是这本书的核心;而直接操作文件是另一种完全不同的思路,放最后比较合适。
第二版还更新了什么
除了上面说的新章节,第二版还有几个重要的更新:
- Python版本从3.8升到了3.14,pandas从1.1.3升到了3.0.0
- 第一版用的Anaconda发行版,第二版换成了uv包管理器——更轻量
- 新增了几个项目案例,用到了DuckDB、Parquet文件、Hugging Face的预训练模型、OpenAI API
一点感受
这本书适合谁?我觉得是那些已经会用Excel做数据分析,但觉得Excel越来越不够用的人。比如你经常处理几十万行的数据,Excel卡得要死;或者你每天要花大量时间做重复性的Excel操作;或者你想用机器学习模型来分析Excel里的数据但不知道从哪下手。
读完这本书最大的收获不是学会了某个具体函数怎么用——那些上网查就行——而是建立了一个认知框架:「在什么场景下用什么工具」。什么时候用pandas直接在代码里处理数据,什么时候用Python in Excel在表格里写Python,什么时候用xlwings让Excel和Python互相调用,什么时候直接操作文件不用打开Excel。
书里有一句话说得挺好:Excel和Python的结合,让数据分析师和数据科学家之间的界限变得越来越模糊。这句话放到今天看,确实在变成现实。