Excel 支持运行 Python 代码,做表格也要学编程了?
csdh11 2025-01-23 16:14 18 浏览
8 月 22 日,微软宣布同 Anaconda 合作,为 Excel 带来 Python 整合。整合了 Python 后的 Excel 可以直接在单元格中运行 Python 代码,使用常用的 Python 库(例如 pandas、numpy、matplotlib 等)来进行统计学运算、绘图等,甚至也可以加载一些机器学习库。
由于在云端进行运算,Python in Excel 并不要求用户在计算机上预先安装任何环境,有 Excel 程序和互联网连接即可开始编程。目前,Python in Excel 已经上线 Microsoft 365 Insider 的 Beta Channel(仅限 Windows 版本),作为免费预览给 Insider 们体验。我也借此机会,打开了 Python in Excel 简单试用了一下。
▍Python in Excel 的优势
Python in Excel 可以解决一些以往单纯使用 Excel 可能无法做到的数据整理、统计报表、图形绘制等问题。利用 Python 和各类常见、功能强大的库,我们可以在 Excel 中使用 Python 直接访问数据并形成可编辑的输出结果。
举个例子而言,利用 pandas 库的 query 功能,我们可以方便地对数据进行高级筛选,并把结果呈现在 Excel 区域中。
在过去 Excel 本身的高级筛选功能需要我们新开一个区域,将筛选规则写进去;但对于 pandas 而言,则是将相关的筛选要求写进代码。例如,我在整理学生档案信息时,获得了一组学号,需要查看这些学号对应的学生信息。如使用 Excel 的高级筛选功能,我一般会把表头复制到另一张工作表,然后把需要的学号输入进去,再使用高级筛选选择范围。但在 Python in Excel 使用 pandas 的 query 功能,只需要敲一行代码即可。
此外,我们也可以快速在 Excel 中创建数据统计报表。例如 pandas 可以对 DataFrame 执行 describe 函数,返回一组数据的平均数、标准差、最大值、最小值,并默认按照 25% 的步长计算分度值——如果用 Excel 函数,则需要好几个函数才能形成表格;而数据及引用范围的更新,用 Python 也只不过是敲几个字母的事情。
▍从单元格运行 Python 代码
升级到 Beta Channel 的 Microsoft 365 后,在「公式」选项卡的显著位置即可看到「Python(预览版)」区域,其中我们可以直接向单元格插入 Python,进行重置,或者打开「诊断」窗口。点击「插入 Python」或者在活动单元格中输入 =PY(,即可自动开启 Python 代码输入模式。此时,公式编辑栏左侧会出现一个绿色背景的「PY」图标,表示当前单元格是 Python 代码内容。
与以往在 IDE 环境中使用 csv 或其他模块读取电子表格中的数据不同的是,Python in Excel 可以直接在 Excel 工作表内通过 Python 代码对 Excel 表格的区域加以读取和引用,从而在一定程度上减少了我们的工作量。目前,Python in Excel 目前主要有以下几个方面值得关注:
示例代码
Python in Excel 提供了好几种示例数据,包括使用 pandas、matplotlib、seaborn 等 Python 库进行各类统计分析、绘图等操作。例如,其中一种示例让我们可以使用 pandas 对一组数据进行描述性统计。
初始化
Python in Excel 提供一个默认的已经初始化的环境,这个环境中诸如 numpy、pandas 等常用的库都已经通过 import 声明,用户可以在单元格中直接引用,而无需每次在单元格编程的时候再次声明。目前,默认的初始化环境还无法修改。不过,如果你需要使用除了已经导入的库之外的 Python 库而不想每次都声明,Excel 也提供了一个解决方式,那就是在工作簿的头部新建一个工作表并在第一个单元格声明所需要的库即可 —— 工作簿一开头的工作表总是会最先执行计算。
引用 Excel 表格
Python in Excel 主要使用 pandas 库中「Series」和「DataFrame」两种类型的数据对现有的 Excel 表格进行转化,以符合在 Python 中进行数据分析的需要。前者是一维表,后者是二维表。但除此之外,Python in Excel 也支持 Python 所支持的各类数据类型。在 Python in Excel 中引用 Excel 单元格、区域、表格等的方式是使用 xl() 函数。使用方式如下:
#将 A1:I144 范围内的 Excel 区域作为一个 DataFrame,并以 A 行文字作为标题行
df = xl("A1:I144", headers=True)
#将名为「IrisDataSet5」表格内的全部数据作为一个 Data Frame,并以第一行文字作为标题行
df = xl("IrisDataSet5[#全部]", headers=True)
一旦引用完毕,df 作为一个 DataFrame 的变量名,即可在接下来的 Python 数据分析中使用。例如,可以为 DataFrame 重设索引、建立分类汇总、进行描述统计乃至绘图,或者是读取其内部的某个数据;当然也可以通过列表、字典等存储和传送数据。
Python 输出
Python in Excel 的代码默认使用 Enter 键换行。如果代码已经完成,则可以使用 Ctrl+Enter 键提交。提交后,Excel 会将代码送至云端进行运算,并返回指定形式的输出。Excel 中有两种形式的输出:
Python 数据类型。这种形式的输出会在单元格中显示当前代码运行结果所输出的数据类型,如 DataFrame、List、Image 等等。
Excel 值。这种形式的输出将直接显示 Python 代码运行的结果,例如将 DataFrame 中的数据自动填充到 Excel 区域中(例如上图中 G4 单元格中的 DataFrame 自动填充到了 G4:K12 区域),或者将图表显示在 Excel 表格中。区域中的数据可以使用 Excel 的格式化功能来修改相关格式,例如字体大小、粗细或者是货币单位、小数点后保留位数,等等。
Python 诊断
Python in Excel 也提供一定程度上的诊断工具。当单元格中出现计算错误(例如 #PYTHON 错误表示代码运行出错)时,可以通过「诊断」窗格查看当前工作表或者整个工作簿中 Python 代码执行的问题,并提供历史记录功能。另外,如果在 Python 代码中使用了 print() 函数,显示结果也会呈现在这里;如果仅仅使用 print() 函数在 Python in Excel 中作为输出,单元格中的运算结果将会是 NoneType 类型。
▍实际体验
在 Excel 的公式栏中写代码,感觉总是有点奇怪。至少在现阶段,实际的代码编辑体验是完全不如 VS Code 等成熟的 IDE 的——代码不支持高亮、没有自动缩进,自动补全功能也尚有缺失,默认编辑字体也奇奇怪怪,Python 还是很需要等宽字体来验证缩进的,然而很多时候正在编辑的代码字体和原先完全不一致,搞得人很烦躁。
为了整理一份数据,我在 Python in Excel 里面写了大概三十行代码,过程很难说有多愉悦;不过好在诊断信息还算详细和准确,让我可以及时发现代码中的一些错误,从而顺利完成数据整理的工作。
不确定上面的这些糟糕的体验会不会在之后的版本更新中得到改进。Anaconda 博客甚至指出,Python in Excel 的目的并非是为开发程序所设计,用户需要专注于将其应用于数据的整理分析,并尽量减少在 Python in Excel 中执行过于复杂的代码。
the Python calculations run in the Microsoft Cloud, and your results are returned to the worksheet.
正如微软官方所说的那样,Python in Excel 的运算过程发生在云端,决定了没有网络的情况下是无法运行 Python in Excel 代码的,会出现 #CONNECT 错误——这在一定程度上可能会对数据保密性产生影响,并且更重要的是,在没有网络的情况下无法及时更新计算结果。
不过,可以直接在 Excel 中使用 Python 来访问 Excel 工作簿中的数据,并且对数据进行整理、运算、分析、绘图,并将结果直接呈现在 Excel 工作簿中,或许是 Python in Excel 最有优势的一点。
此外,以往借助 Excel 公式、数据透视表等工具难以解决的数据分析与可视化难题,利用 Python 强大的各种库也往往可以迎刃而解;也可以直接使用 Python 来定义新的函数来组合一系列 Python 操作,从而简化工作流、提高效率。
值得注意的是,Python in Excel 的提供商 Anaconda 已经推出了专题博客页面,提供许多详细的教程与示例可以学习,十分值得参考。
相关推荐
- 知名软件变“木马”:2小时感染10万电脑
-
近日,腾讯电脑管家监测发现,一款通过“驱动人生”升级通道,并同时利用“永恒之蓝”高危漏洞传播的木马突然爆发,仅2个小时受攻击用户就高达10万。腾讯电脑管家可精准拦截该病毒攻击,管家团队也将持续跟踪该款...
- 腾讯电脑管家发布病毒预警:“驱动人生木马”爆发,2小时感染10万台电脑
-
新华网天津12月15日电(记者周润健)腾讯电脑管家15日紧急发布病毒预警,14日下午,腾讯电脑管家监测发现,一款通过“驱动人生”升级通道,并同时利用“永恒之蓝”高危漏洞传播的木马突然爆发,仅2个小时受...
- 全新“撒旦”勒索病毒来袭 瑞星推出独家解密工具
-
新华社北京7月26日电瑞星威胁情报平台近日发现多起国内用户感染“撒旦”勒索病毒事件。据瑞星安全研究人员介绍,该病毒运行后会加密受害者计算机文件,加密完成后会用中英韩三国语言索取1个比特币作为赎金,并...
- 新勒索病毒“WannaCry”疯狂来袭 乌克兰副总理电脑中招
-
据外媒报道,从6月27日开始,一种新勒索病毒再次疯狂来袭,已席卷欧洲多个国家,连乌克兰副总理的电脑都已中招。报道称,这轮病毒足以与五月席卷全球的勒索病毒“WannaCry”的攻击性相提并论。该病毒代号...
- 蠕虫病毒利用“永恒之蓝”漏洞传播 单位局域网受威胁最大
-
日前,火绒安全团队通过“火绒威胁情报系统”发现蠕虫病毒“Worm/Sharp”正在全网传播,其中在政府、企业、学校、医院等单位的局域网具有非常强的传播能力。该病毒通过“永恒之蓝”漏洞、多个电脑常用端口...
- 新病毒爆发:利用“永恒之蓝”传播,2小时感染10万台电脑挖矿
-
驱动人生发布的声明。据腾讯安全专家介绍,通过追溯病毒传播链发现,该病毒自12月14日约14点,利用“驱动人生”、“人生日历”等软件最早开始传播,另有约30%的传播通过“永恒之蓝”漏洞在局域网内进行主动...
- 逍遥安卓模拟器定制手游电脑版 手机电脑账号完全互通
-
从今年起大量回合制端游转向手游方向,无论是《梦幻西游》、《大话西游》、《神武》还是刚刚发行的《问道》手游,都是非常重度需要大量时间来做任务挂机升级的游戏。很多人习惯了端游的时候一个电脑可以多开的玩法,...
- 安卓模拟器绿色U盘移动版 公司玩游戏无痕迹
-
安卓模拟器已经不稀奇了!随着安卓手游的盛行,特别是《梦幻西游手游》之类的重度手游发布,玩手游花的时间也越来越多。用手机玩这些游戏存在着屏幕小、点量少、费流量还有容易被电话打断,在电脑上用安卓模拟器玩游...
- 苹果推出 iCloud 照片和视频转移服务:可转移至谷歌相册
-
IT之家3月4日消息据MacRumors今日报道,苹果公司本周推出了一项新服务,帮助iCloud用户方便快捷的将其存储的照片和视频转移到谷歌照片上。苹果在其支持文档中表示,用户可以登...
- NAS PK台,4核带m.2的威联通TS-264C vs 双核TS-462C
-
因为618年中大促看到威联通TS-264C和TS-462C这两机型售价差不多,就做个比较以供参考。毕竟作为自2007年以来就一直卖威联通的NAS老油来说,对威联通各NAS机型的识别还是相当全面的,对不...
- 前端学AI(七):构造 RAG 系统评估测试数据集
-
引言在基于DeepSeek+Chroma+LangChain开发一个简单RAG系统...
- 惨重教训!调查显示挪威“英斯塔”号宙斯盾舰撞油轮后本不必“丧命”
-
最新公布的调查报告显示,挪威皇家海军“英斯塔”号护卫舰2018年11月与油轮相撞后,如果其舰员接受了更好的损管训练,并且对舰艇的稳定特性更加熟悉的话,这艘宙斯盾型战舰本来是可以挽救的。↑挪威“英斯塔”...
- 「必买」盘点2021年男人们的败家清单,越“败”越香
-
心里总想买点啥?看看《必买》,全网最有料的场景种草指南。草原割不尽,春风吹又生。在过去的2021年,不断被各种数码产品种草,一直在买买买,剁手不停。大部分产品都经过详细的对比做足了功课,也有部分是一时...
- 实现浏览器播放rtsp视频流的解决方案
-
有同学问道:需要实时播放摄像头rtsp视频流,而浏览器不能直接播放,怎样解决?实现这个需求可以通过插件或者转码来实现。要实现这个目的,可以采用的方案非常得多,有商业的也有开源的,这里主要列举一些开源的...
- ISO9000你知道多少?
-
1ISO9000族标准是什么?ISO9000族标准是指由国际标准化质量管理和质量保证技术委员会(ISO/TC176)制订的所有国际标准。ISO9000族标准可帮助各种类型和规模的组织实施并有效运行质...
- 一周热门
- 最近发表
- 标签列表
-
- mydisktest_v298 (34)
- document.appendchild (35)
- 头像打包下载 (61)
- acmecadconverter_8.52绿色版 (39)
- word文档批量处理大师破解版 (36)
- server2016安装密钥 (33)
- mysql 昨天的日期 (37)
- parsevideo (33)
- 个人网站源码 (37)
- centos7.4下载 (33)
- mysql 查询今天的数据 (34)
- intouch2014r2sp1永久授权 (36)
- 先锋影音源资2019 (35)
- jdk1.8.0_191下载 (33)
- axure9注册码 (33)
- pts/1 (33)
- spire.pdf 破解版 (35)
- shiro jwt (35)
- sklearn中文手册pdf (35)
- itextsharp使用手册 (33)
- 凯立德2012夏季版懒人包 (34)
- 冒险岛代码查询器 (34)
- 128*128png图片 (34)
- jdk1.8.0_131下载 (34)
- dos 删除目录下所有子目录及文件 (36)