百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Excel支持Python了,你先冷静一下

itomcoil 2024-12-07 13:23 31 浏览

HI,大家好,我是星光。

今天给大家聊一下这段时间很火热的Python in Excel,希望大家看完之后冷静一下,不要再天天催更了。

本期推文主要回答大家以下几个问题:

1,什么是Python in Excel

2,如何拥有它

3,如何使用它计算Excel数据

4,它的优劣是什么,函数/VBA等还有必要学吗?

1,什么是Python in Excel

前几天微软宣布在Excel中支持使用Python。Python是近几年来最流行、用户最多的编程语言,没有之一,你也许不会用它,但一定听说过它。不过目前该功能还处于灰度测试中,只有Excel 365版本的Beta部分用户可用。

2,如何加载Python功能

首先需要加入Microsoft 365预览体验计划,在搜索栏搜索关键字预览体验计划,点击「Microsoft 365预览体验计划」,在打开的对话框中勾选「为我注册以抢先体验...」,计划频道选择Beta版频道,勾选[我同意约束...」,最后单击「确定」。

关闭Excel重启,在候审1分钟~24+小时之后,在公式选项卡下,你就有可能会看到Python功能组了。

当然了,也有可能看不到。目前这个功能还处于灰度测试中,并不是人人都会被灰的…还是要看脸你看看我——懂了吧?

3,如何使用Python in Excel

微软是这么说的:Excel for Windows 中提供了 Excel 中的 Python。此功能在 Excel for Mac、Excel web 版、Excel for iPad、Excel for iPhone 或 Excel for Android 中不可用——说人话目前最靠谱的平台是Excel for Windows,其它用不了

除此之外,Excel中的Python是在微软云中运行的。言外之意有两个:

1,你电脑中是否安装的Python对它没有任何意义。

2,得联网

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

这个编辑模式不但简单而且极其——简陋不提供完整的语法提示功能,和盲打Python差别不大,真一个手工出细活。

环境搭载完成后就进入了数据处理的阶段,众所周知,这包含了三个过程:数据获取、数据计算和数据输出。

□如何读取数据

在PY代码编辑模式下,使用鼠标框选单元格区域,编辑栏会自动生成一个叫xl的函数,它返回Python库Pandas的一个DataFrame对象。

该函数有两个参数,第1个参数表示引用的单元格或区域,第2参数是可选的,表示是否包含标题行,True是包含,Flase不包含。

按组合键<ctrl+回车>可以结束代码输入,注意不是单纯的按回车,只按回车键是代码换行。

……这里额外说两句,很多朋友看到Excel支持Python后高兴的原因之一是,以为Excel可以调用Python异常丰富的各种包,实现抓取网页数据,读取合并各种文件的数据源…

看我忽闪忽闪的小眼神,想多了呀朋友,微软帮助文件明确说明,Py Excel无法发出网络请求或访问本地计算机上的文件和数据。它自身甚至连跨工作薄读取Excel数据的能力都没有。如果需要跨工作簿计算数据,还得先用PQ把数据引用进来…。

□如何输出数据

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

□如何计算数据

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

支持类▲

除此之外,它还内置了5个常用的数据分析和可视化的库:Pandas、Numpy、matplotlib、seaborn和statsmodels。另外,使用import语句,也可以导入Anaconda 提供的其他库(但出于数据安全性的考虑,导入≠可用)

对于经常使用工作表函数解决Excel问题的朋友来说,最常用也是最重要的是Pandas。这个库有多重要呢?我说个事你就明白了。它一个库就是一个完整的数据处理体系,以至于Power Query的M函数便是借鉴了它的产物,但M函数比起Pandas本尊来相差甚远。

举几个基础小案例。

近几年来Excel工作表函数最让人诟病的问题之一,是一直没有提供分组+自定义计算方式的函数,借助Pandas的groupby语句我们可以轻松解决这类问题。

如上图所示,以下简短的代码就可以统计成绩表每个班级的人数、最高分、最低分和平均分。

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行代码先按平台和商品字段对数据分组,然后遍历各个组内的数据,按日期和价格排序后取第一行数据。

……

工作表函数最让人诟病的问题之二,是不支持正则表达式,现在,PY Excel来了。

以下代码可以将上图中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也远远不如Excel自身的工作表函数体系。

所以目前来看,它只是Excel处理数据的一个有益的补充,给用户多一种选择,仅此而已。别沸腾Excel又革命了,先做个合格的改良派再说吧(~我是说目前啊)。

如果你会Python,我想不出你有什么理由一定要在Excel里写Python——编辑器极其简陋,计算效率属实不给力,跨平台能力无。

如果你不会Python,我也想不出你有什么理由会在Excel里写Python——毕竟你不会啊。

所以这个东西它深重的意义是什么?——这就需要发挥想象以及且观后效了。


图文作者:看见星光

原载:Excel星球

相关推荐

Python 类型注解的进阶应用:从静态检查到元编程

阅读文章前辛苦您点下“关注”,方便讨论和分享,为了回馈您的支持,我将每日更新优质内容。如需转载请附上本文源链接!近年来,Python类型注解(TypeHinting)逐渐从一个可选的功能演变为大型...

高阶Python|返回类型提示技巧 (1)

引言Python提供了一种可选的特性——类型提示,它有助于提高代码的可读性、可推理性和可调试性。通过类型提示,开发者能够清楚地了解变量、函数参数和返回值应具备的数据类型。在开发那些需要高度灵活性的应用...

跟我一起学Python-函数的定义(基础)

一.函数的定义和调用1.语法:def函数名():函数封装的代码函数最好能够表达函数内部封装的代码功能,方便后续的调用,函数命名需要遵循规则字母、数字、下划线、不能以数字开头,不能使用系统关键字。&#...

Python函数参数和返回值类型:让你的代码更清晰、更健壮

在Python开发中,你是否遇到过这些抓狂时刻?同事写的函数参数类型全靠猜调试两小时发现传了字符串给数值计算函数重构代码时不知道函数返回的是列表还是字典今天教你两招,彻底解决类型混乱问题!让你的...

python入门到脱坑 函数—参数(python 参数处理)

本文包括必须参数,关键参数,默认参数以及可变参数Python函数参数详解一、位置参数(必需参数)位置参数是函数调用时必须提供的参数,且顺序必须与定义时一致。基本用法defgreet(name,me...

python入门到脱坑经典案例—求两个数的和

下面为大家讲解如何求两个数之和——这是编程中最基础但最重要的算术运算之一。我们会从最简单的情况逐步深入,并穿插相关编程概念。1.最基础版本#定义两个变量num1=5num2=3#...

新手必看!30 个 Python 核心函数详解,手把手教你玩转编程

Python中30个核心函数及其含义、代码示例、注释和应用场景:print():用于输出文本或变量的值到控制台。message="Hello,World!"#定义一个...

Python快速入门教程1:基本语法、数据类型、运算符、数字字符串

Python3的基础教程,涵盖了基本语法、数据类型、类型转换、解释器、注释、运算符、数字和字符串等内容,并附有使用实例场景。Python3的基础教程,涵盖了基本语法、数据类型、类型转换、解释器、注释、...

编程小白学做题:Python 的经典编程题及详解,附代码和注释(八)

适合Python3+的6道编程练习题(附详解)1找出字典中值最小的键题目描述:找出字典中值最小的键(如{"a":5,"b":2,"c...

新手学Python避坑,学习效率狂飙! 二十一、print()函数

感谢大家对《新手学Python避坑,学习效率狂飙!》系列的点赞、关注和收藏,今天这编是这个系列的第二十一个分享,前面还有二十个,大家可以关注下之前发布的文章。下面是我们今天第三个的分享:在Pytho...

编程小白学做题:Python 的经典编程题及详解,附代码和注释(六)

适合Python3+的6道编程练习题(附详解)1、打印杨辉三角的前n行题目描述:给定正整数n,打印杨辉三角的前n行(每个数等于它上方两数之和,每行首尾为1)。编写思路:杨辉三角的第i...

让你的Python代码更易读:7个提升函数可读性的实用技巧

如果你正在阅读这篇文章,很可能你已经用Python编程有一段时间了。今天,让我们聊聊可以提升你编程水平的一件事:编写易读的函数。请想一想:我们花在阅读代码上的时间大约是写代码的10倍。所以,每当你创建...

python入门到脱坑 函数—return语句

Python函数中的return语句详解一、return语句基础1.1基本功能return语句用于从函数中返回一个值,并立即结束函数的执行。defadd(a,b):returna+...

编程小白学做题:Python 的经典编程题及详解,附代码和注释(七)

适合Python3+的6道编程练习题(附详解)1.检查字符串是否以指定子串开头题目描述:判断字符串是否以给定子串开头(如"helloworld"以"hello&...

python的注释符是什么(python的合法注释符号是什么)

python的注释符是什么?python的注释符包括单行注释符和多行注释符。一、python单行注释符号(#)井号(#)常被用作单行注释符号,在代码中使用#时,它右边的任何数据都会被忽略,当做是注释。...