分享

Excel支持Python后,这些问题是你需要关心和了解的

 新用户0118F7lQ 2023-08-30 发布于山东

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——毕竟你不会啊图片

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

图片


没了,挥挥手,咱们下期再见(国庆后更新Py Excel的Flag这次绝对不会倒,如果倒了都怪那些早也催晚也催中午睡午觉也要催一催的催更的人图片)。


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多