Excel 支持运行 Python 代码,做表格也要学编程了?
liuian 2024-12-20 17:20 116 浏览
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 已经推出了专题博客页面,提供许多详细的教程与示例可以学习,十分值得参考。
相关推荐
-
- 驱动网卡(怎么从新驱动网卡)
-
网卡一般是指为电脑主机提供有线无线网络功能的适配器。而网卡驱动指的就是电脑连接识别这些网卡型号的桥梁。网卡只有打上了网卡驱动才能正常使用。并不是说所有的网卡一插到电脑上面就能进行数据传输了,他都需要里面芯片组的驱动文件才能支持他进行数据传输...
-
2026-01-30 00:37 liuian
- win10更新助手装系统(微软win10更新助手)
-
1、点击首页“系统升级”的按钮,给出弹框,告诉用户需要上传IMEI码才能使用升级服务。同时给出同意和取消按钮。华为手机助手2、点击同意,则进入到“系统升级”功能华为手机助手华为手机助手3、在检测界面,...
- windows11专业版密钥最新(windows11专业版激活码永久)
-
Windows11专业版的正版密钥,我们是对windows的激活所必备的工具。该密钥我们可以通过微软商城或者通过计算机的硬件供应商去购买获得。获得了windows11专业版的正版密钥后,我...
-
- 手机删过的软件恢复(手机删除过的软件怎么恢复)
-
操作步骤:1、首先,我们需要先打开手机。然后在许多图标中找到带有[文件管理]文本的图标,然后单击“文件管理”进入页面。2、进入页面后,我们将在顶部看到一行文本:手机,最新信息,文档,视频,图片,音乐,收藏,最后是我们正在寻找的[更多],单击...
-
2026-01-29 23:55 liuian
- 一键ghost手动备份系统步骤(一键ghost 备份)
-
步骤1、首先把装有一键GHOST装系统的U盘插在电脑上,然后打开电脑马上按F2或DEL键入BIOS界面,然后就选择BOOT打USDHDD模式选择好,然后按F10键保存,电脑就会马上重启。 步骤...
- 怎么创建局域网(怎么创建局域网打游戏)
-
1、购买路由器一台。进入路由器把dhcp功能打开 2、购买一台交换机。从路由器lan端口拉出一条网线查到交换机的任意一个端口上。 3、两台以上电脑。从交换机任意端口拉出网线插到电脑上(电脑设置...
- 精灵驱动器官方下载(精灵驱动手机版下载)
-
是的。驱动精灵是一款集驱动管理和硬件检测于一体的、专业级的驱动管理和维护工具。驱动精灵为用户提供驱动备份、恢复、安装、删除、在线更新等实用功能。1、全新驱动精灵2012引擎,大幅提升硬件和驱动辨识能力...
- 一键还原系统步骤(一键还原系统有哪些)
-
1、首先需要下载安装一下Windows一键还原程序,在安装程序窗口中,点击“下一步”,弹出“用户许可协议”窗口,选择“我同意该许可协议的条款”,并点击“下一步”。 2、在弹出的“准备安装”窗口中,可...
- 电脑加速器哪个好(电脑加速器哪款好)
-
我认为pp加速器最好用,飞速土豆太懒,急速酷六根本不工作。pp加速器什么网页都加速,太任劳任怨了!以上是个人观点,具体性能请自己试。ps:我家电脑性能很好。迅游加速盒子是可以加速电脑的。因为有过之...
- 任何u盘都可以做启动盘吗(u盘必须做成启动盘才能装系统吗)
-
是的,需要注意,U盘的大小要在4G以上,最好是8G以上,因为启动盘里面需要装系统,内存小的话,不能用来安装系统。内存卡或者U盘或者移动硬盘都可以用来做启动盘安装系统。普通的U盘就可以,不过最好U盘...
- u盘怎么恢复文件(u盘文件恢复的方法)
-
开360安全卫士,点击上面的“功能大全”。点击文件恢复然后点击“数据”下的“文件恢复”功能。选择驱动接着选择需要恢复的驱动,选择接入的U盘。点击开始扫描选好就点击中间的“开始扫描”,开始扫描U盘数据。...
- 系统虚拟内存太低怎么办(系统虚拟内存占用过高什么原因)
-
1.检查系统虚拟内存使用情况,如果发现有大量的空闲内存,可以尝试释放一些不必要的进程,以释放内存空间。2.如果系统虚拟内存使用率较高,可以尝试增加系统虚拟内存的大小,以便更多的应用程序可以使用更多...
-
- 剪贴板权限设置方法(剪贴板访问权限)
-
1、首先打开iphone手机,触碰并按住单词或图像直到显示选择选项。2、其次,然后选取“拷贝”或“剪贴板”。3、勾选需要的“权限”,最后选择开启,即可完成苹果剪贴板权限设置。仅参考1.打开苹果手机设置按钮,点击【通用】。2.点击【键盘】,再...
-
2026-01-29 21:37 liuian
- 平板系统重装大师(平板重装win系统)
-
如果你的平板开不了机,但可以连接上电脑,那就能好办,楼主下载安装个平板刷机王到你的个人电脑上,然后连接你的平板,平板刷机王会自动识别你的平板,平板刷机王上有你平板的我刷机包,楼主点击下载一个,下载完成...
- 联想官网售后服务网点(联想官网售后服务热线)
-
联想3c服务中心是联想旗下的官方售后,是基于互联网O2O模式开发的全新服务平台。可以为终端用户提供多品牌手机、电脑以及其他3C类产品的维修、保养和保险服务。根据客户需求层次,联想服务针对个人及家庭客户...
- 一周热门
- 最近发表
- 标签列表
-
- python判断字典是否为空 (50)
- crontab每周一执行 (48)
- aes和des区别 (43)
- bash脚本和shell脚本的区别 (35)
- canvas库 (33)
- dataframe筛选满足条件的行 (35)
- gitlab日志 (33)
- lua xpcall (36)
- blob转json (33)
- python判断是否在列表中 (34)
- python html转pdf (36)
- 安装指定版本npm (37)
- idea搜索jar包内容 (33)
- css鼠标悬停出现隐藏的文字 (34)
- linux nacos启动命令 (33)
- gitlab 日志 (36)
- adb pull (37)
- python判断元素在不在列表里 (34)
- python 字典删除元素 (34)
- vscode切换git分支 (35)
- python bytes转16进制 (35)
- grep前后几行 (34)
- hashmap转list (35)
- c++ 字符串查找 (35)
- mysql刷新权限 (34)
