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

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

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

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星球

相关推荐

《Queendom》宣布冠军!女团MAMAMOO四人激动落泪

网易娱乐11月1日报道据台湾媒体报道,南韩女团竞争回归的生死斗《Queendom》昨(10/31)晚播出大决赛,并以直播方式进行,6组女团、女歌手皆演唱新歌,并加总前三轮的赛前赛、音源成绩与直播现场投...

正确复制、重写别人的代码,不算抄袭

我最近在一篇文章提到,工程师应该怎样避免使用大量的库、包以及其他依赖关系。我建议的另一种方案是,如果你没有达到重用第三方代码的阈值时,那么你就可以自己编写代码。在本文中,我将讨论一个在重用和从头开始编...

HTML DOM tr 对象_html event对象

tr对象tr对象代表了HTML表格的行。HTML文档中出现一个<tr>标签,就会创建一个tr对象。tr对象集合W3C:W3C标签。集合描述W3Ccells返回...

JS 打造动态表格_js如何动态改变表格内容

后台列表页最常见的需求:点击表头排序+一键全选。本文用原生js代码实现零依赖方案,涵盖DOM查询、排序算法、事件代理三大核心技能。效果速览一、核心思路事件入口:为每个<th>绑...

连肝7个晚上,总结了66条计算机网络的知识点

作者|哪吒来源|程序员小灰(ID:chengxuyuanxiaohui)计算机网络知识是面试常考的内容,在实际工作中经常涉及。最近,我总结了66条计算机网络相关的知识点。1、比较http0....

Vue 中 强制组件重新渲染的正确方法

作者:MichaelThiessen译者:前端小智来源:hackernoon有时候,依赖Vue响应方式来更新数据是不够的,相反,我们需要手动重新渲染组件来更新数据。或者,我们可能只想抛开当前的...

为什么100个前端只有1人能说清?浏览器重排/重绘深度解析

面试现场的"致命拷问""你的项目里做过哪些性能优化?能具体讲讲重排和重绘的区别吗?"作为面试官,我在秋招季连续面试过100多位前端候选人,这句提问几乎成了必考题。但令...

HTML DOM 介绍_dom4j html

HTMLDOM(文档对象模型)是一种基于文档的编程接口,它是HTML和XML文档的编程接口。它可以让开发人员通过JavaScript或其他脚本语言来访问和操作HTML和XML文档...

JavaScript 事件——“事件流和事件处理程序”的注意要点

事件流事件流描述的是从页面中接收事件的顺序。IE的事件流是事件冒泡流,而NetscapeCommunicator的事件流是事件捕获流。事件冒泡即事件开始时由最具体的元素接收,然后逐级向上传播到较为不...

探秘 Web 水印技术_水印制作网页

作者:fransli,腾讯PCG前端开发工程师Web水印技术在信息安全和版权保护等领域有着广泛的应用,对防止信息泄露或知识产品被侵犯有重要意义。水印根据可见性可分为可见水印和不可见水印(盲水印)...

国外顶流网红为流量拍摄性侵女学生?仅被封杀三月,回归仍爆火

曾经的油管之王,顶流网红DavidDobrik复出了。一切似乎都跟他因和成员灌酒性侵女学生被骂到退网之前一样:住在950万美元的豪宅,开着20万美元的阿斯顿马丁,每条视频都有数百万观看...人们仿佛...

JavaScript 内存泄漏排查方法_js内存泄漏及解决方法

一、概述本文主要介绍了如何通过Devtools的Memory内存工具排查JavaScript内存泄漏问题。先介绍了一些相关概念,说明了Memory内存工具的使用方式,然后介绍了堆快照的...

外贸独立站,网站优化的具体内容_外贸独立站,网站优化的具体内容有哪些

Wordpress网站优化,是通过优化代码、数据库、缓存、CSS/JS等内容,提升网站加载速度、交互性和稳定性。网站加载速度,是Google搜索引擎的第一权重,也是SEO优化的前提。1.优化渲染阻塞。...

这8个CSS工具可以提升编程速度_css用什么编译器

下面为大家推荐的这8个CSS工具,有提供函数的,有提供类的,有提取代码的,还有收集CSS的统计数据的……请花费两分钟的时间看完这篇文章,或许你会找到意外的惊喜,并且为你的编程之路打开了一扇新的大门。1...

vue的理解-vue源码 历史 简介 核心特性 和jquery区别 和 react对比

一、从历史说起Web是WorldWideWeb的简称,中文译为万维网我们可以将它规划成如下的几个时代来进行理解石器时代文明时代工业革命时代百花齐放时代石器时代石器时代指的就是我们的静态网页,可以欣...