


□环境配置
使用Excel中的Python,除了Excel版本的要求之外,还有以下必需条件。
微软是这么说的:Excel 中的 Python 在 Excel for Windows、Excel web 版 和 Excel for Mac 中可用,但在Android、iPad、iPhone中不可用。
另外,Excel中的Python是在微软云中运行的。言外之意有两个:1,你电脑中是否安装的Python对它没有任何意义。2,得联网。

符合以上要求之后,在单元格中输入=PY(,或者点击菜单栏中的「插入Python」命令,编辑栏就会自动转换为PY代码编辑模式了。

以上是环境配置,之后就进入数据处理的阶段。众所周知,这包含了三个过程:数据的获取、计算和输出。
□如何读取数据
在PY代码编辑模式下,使用鼠标框选单元格区域,编辑栏会自动生成一个叫xl的函数,它返回Python的Pandas库的DataFrame对象。
该函数有两个参数,第1个参数表示引用的单元格或区域,第2参数是可选的,表示是否包含标题行,True是包含,Flase不包含。

按组合键<ctrl+回车>可以结束代码输入,注意不是单纯的按回车,只按回车键是代码换行。
……这里额外说两句,很多朋友看到Excel支持Python后非常高兴,以为Excel可以调用Python异常丰富的各种包,实现抓取网页数据,读取合并各种文件的数据源…
看我忽闪忽闪的小眼神,想多了呀朋友,微软帮助文件明确说明,Py Excel无法发出网络请求或访问本地计算机上的文件和数据。它自身甚至连跨工作薄读取Excel数据的能力都没有。如果需要跨工作簿计算数据,还得先用PQ把数据引用进来…
它是一个被关在沙箱里的计算工具,主要负责在云端把数据算完再送回来,而不是一个能随意访问外部环境的标准 Python 环境。

□如何输出数据
Python in Excel代码返回的结果默认为Python对象,需要将输出模式修改为「Excel的值」才能以动态数组的形式在工作表内显示具体的数据👇修改方法参见下图:

□如何计算数据
Python的基本语句和常用对象,PY Excel都是支持的。比如元组、列表、字典、循环和条件语句、自定义函数和类等等。

支持类▲
除此之外,它还内置了5个常用的数据分析和可视化的库:Pandas、Numpy、matplotlib、seaborn和statsmodels。另外,使用import语句,也可以导入Anaconda 提供的其他库(但出于数据安全性的考虑,导入≠可用)
对于经常使用工作表函数解决Excel问题的朋友来说,最常用也是最重要的是Pandas。这个库有多重要呢?它一个库就是一个完整的数据处理体系,以至于Power Query的M函数便是借鉴了它的产物,但M函数比起Pandas本尊来相差甚远。
看我手臂,我举几个基础小案例。


如上图所示,以下简短的代码就可以统计成绩表每个班级的人数、最高分、最低分和平均分。
df = xl("A1:C10", headers=True)df.groupby("班级").成绩.agg(人数 = "count",最高分 = "max",最低分 = "min",平均分 = "mean")
第1行代码使用xl函数读取数据,并将返回的DataFrame对象赋值变量df。
第2~7行代码使用groupby语句对df按班级字段分组,并统计每个分组内成绩的人数、最高分、最低分和平均分。
……

再如上图所示,以下简单的代码可以统计不同商品在不同平台最新且最低的价格和日期。
df=xl("A1:D10", headers=True)(df.groupby(['平台','商品']).apply(lambda x:x.sort_values(by=['日期','价格'],ascending=[0,1]).head(1)).droplevel([0,1]))
第1行代码读取数据。
第2~6行代码先按平台和商品字段对数据分组,然后遍历各个组内的数据,按日期和价格排序后取第一行数据。
……

以下代码可以将上图中A列的数据按照数据类型拆分成三个字段。
df = xl("A1:B4",headers=True)df.数据.str.extract("([\u4e00-\u9fa5]+)([A-Z\d\.]+)([\u4e00-\u9fa5]+)")
……
打个响指,回答一下最后一个问题。
Python in Excel的优劣是什么?
——它值得学吗?
先说优点吧,优点其实是显而易见的,作为当今最流行的编程语言,Python的强大毋庸置疑,人生苦短就用Python嘛。很多函数很难解决甚至无法解决的问题,换用Python往往会变得很简单。但是——
当Python以函数而非脚本的形式出现在Excel中,而且只支持微软云运行后,缺点更是显而易见的。
出于数据安全考虑(软说的),像工作表函数一样,它无法直接跨文件读取数据,也无法操作其它对象,比如说工作表/簿新建和删除、数据库的读写、邮件的收发、PPT的制作等——它实现的不是大家想象中的办公自动化脚本功能,而只是数据计算和可视化。
因此,群里有朋友问PY Excel出来后VBA是不是就淘汰了,那明显属于想多了。
在国内的环境中,微软云的传输效率大家多少了解,Py Excel号称能计算100M的数据量,但实际上计算几千行就开始噗哧噗哧大喘气了。函数十几秒VBA一刹那就可以完成的计算量,它需要花费数分钟——也未必行
计算结果经常会返回#BUSY!(我在线忙你等会的意思)
另外,从灵活性上来说,Py Excel也远远不如VBA,甚至不如Excel自身的工作表函数体系。
所以目前来看,它只是Excel处理数据的一个有益的补充,给用户多一种选择。它不像是给人用的,更像是给AI用的——别沸腾Excel又革命了,革命是要把所有旧的东西都砸了换新的,哪有年年闹革命的。

如果你会Python,我想不出你有什么理由一定要在Excel里写Python——编辑器极其简陋,计算效率属实不给力,跨平台能力聊胜于无。如果你不会Python,我也想不出你有什么理由会在Excel里写Python——毕竟你不会啊
所以它值得学吗?——不值得,绝大部分人~
没了,挥挥手,咱们下期再见。
⏩需要系统学习Excel却找不到优质教程?学习&工作的过程中遇到疑难表格问题,却找不到人及时作出解答?
加入我的付费社群,学习+训练+答疑,与5000+在线会员一起,同微软最有价值专家MVP同行,全面精进Excel之道
🚂>>~
超低价Excel终身会员:一次付费
永久迭代学习,学习问题永久答疑
扩展阅读

本文由公众号“Excel星球”首发