defiler 发表于 2023-9-26 02:05:47

微软Excel宣布集成Python,对于这个消息,你怎么看?VBA是否还有用武之地?

微软已经将 Python 原生集成到 Excel 公测版中首先向 Microsoft 365 Insiders 推出,从而使用户能够借助 Python 库、数据可视化和分析的能力更好地使用 Excel。
链接:Announcing Python in Excel (microsoft.com)
<hr/>微软已经将 Python 原生集成到 Excel 公测版中首先向 Microsoft 365 Insiders 推出,从而使用户能够借助 Python 库、数据可视化和分析的能力更好地使用 Excel。
目前该功能只能在桌面版 Excel 中使用,但微软表示 Python 计算也可以在微软云中运行。如果感兴趣的话,你现在可以加入 Microsoft 365 Insider 计划并选择 Beta 频道来获取最新的 Excel 版本。

http://pic4.zhimg.com/v2-ec9c2c021a95fe22b6e178737c6be7bf_r.jpg

谭志刚 发表于 2023-9-26 02:06:33

怎么看都觉得是个好事,有了Python的加持,Excel变得更强大了,能力边界又跨出了一大步。
所以更多人关注的并不是怎么看,而是怎么能用上?什么版本的Excel里会有、会不会收费等,就这些问题解惑如下:

1. 什么版本的Excel可以用Python?
目前只有Microsoft365用户可以使用,更具体来说,是Microsoft 365公共预览Beta的最新版本可用(版本号:16818),并且仅限于Windows,其他平台的Excel暂时不可用。

2. 如何获取最新的公共预览Beta版本?
如果你是365用户,但是看不到这个功能,可以尝试升级到最新的公共预览Beta版,方法如下:在功能区上方的搜索栏中搜索“预览体验计划”。

http://picx.zhimg.com/v2-24c6ecfac4f629ee32d0714872985b4f_r.jpg?source=1940ef5c

在搜索结果中点击“Microsoft 365 预览体验计划”,在弹出的窗口中选择“Beta版频道”并勾选同意条款。

http://pic1.zhimg.com/v2-8b87e16d5c1065b666951efc299ee9db_r.jpg?source=1940ef5c
点击确定,将会开始下载安装新版本,完成后你就拥有最新版的预览Beta版Excel了。然后如果能在“公式”选项卡下面看到“插入Python”,就表示你有资格体验这个功能,可以开始体验了。

http://pic1.zhimg.com/v2-10b0754f105715327f0d935b0539473d_r.jpg?source=1940ef5c

如果你已经安装了公共预览Beta版,版本号也是16818,但是还是找不到该功能,就是微软暂时还没有灰度到你,需要再耐心等待一段时间。微软是逐步扩大预览测试范围的,目前并不是所有的公共预览Beta版都可以使用。

3. 内置Python功能是否免费?
微软表示在预览期间,内置Python功能将包含在 Microsoft 365 订阅中,但在预览结束后,「如果没有付费许可证,某些功能将受到限制」。也就是目前预览期间365用户可以免费使用,预览结束正式推出后,使用完整功能需要付费。

4. 是否需要安装python软件?
不需要。无需在本地安装任何Python软件,Excel中的python服务是在微软云中进行的,根据用户指令在云端完成运算后,再将结果返回到Excel中。

5. Excel中的Python能做什么?
内置的Python模块,主要作用会体现在下面三个方面:
1)数据清洗Python的数据清洗功能非常强大,有些传统Excel功能或者PowerQuery不方便清洗的场景,可以用Python来处理了。2)数据可视化可以直接在Excel中调用Python中的Matplotlib 和 Seaborn 等图表库来实现各种可视化效果。尤其是之前Excel中还不支持的各种小众、复杂的图表,以后都可以直接用Excel中的python来制作了。

http://picx.zhimg.com/v2-4c6d6e58ee323143d823a2043ac13be2_r.jpg?source=1940ef5c

3)机器学习等高端分析有了Python,Excel就可以利用它来进行机器学习、回归分析等之前无法做的高端应用场景,Excel实力大幅提升,没有技术背景的人也可以靠Excel来尝试高级分析了。

http://picx.zhimg.com/v2-79653d589bd4fda61e9983d41042671f_r.jpg?source=1940ef5c

6. 是否需要学习python?
如果你想在Excel中使用Python进行数据处理,需要掌握一些python的基础语法,搞清楚如何调用库,遇到问题知道如何修改代码。不过对于大多数Excel用户来说,基本都是python零基础,除非你有大量空闲时间,否则不建议深入学习,毕竟学习一门语言的成本很高,并且现在还有AI工具来辅助你写代码。
7. 本地版是否能用?
不能用。上面已经介绍,python服务是在云端进行,不联网是无法使用的。所以对于担心数据安全而只用本地版Excel的公司来说,无法使用内置的Python。

8. VBA是否还有用武之地?
当然有,Python的推出并不是取代vba的,肯定有些工作用python或者vba都可以做到,但是哪个方便用哪个,关键是每个人拥有的技能点,并不是什么都会的,面对一个任务,会vba就用vba,会python就用python。
如果什么都不会怎么办?马上去学呗!
&lt;hr/&gt;
Python已经来了,Copilot还会远吗?或许不久之后,Excel用户的主要工作方式是用内置的Copilot帮忙写Python代码,自动完成各种任务,Excel的未来想象空间太大了……


采悟:干货合辑 | 最全的PowerBI教程,都在这里了
.

wjml223 发表于 2023-9-26 02:06:58

先给观点:会 python 的大多数不用 Excel 。
再给建议:如果你是一个 Excel 用户,想实现自动化和数据分析,学 BI 比 Python 更简单。
最后详细开讲这次集成的内容:
在面向 Office Insider 用户推出的预览版本中,微软为 Excel 集成 Python 函数,用户无需任何额外的设置即可将 Python 代码添加到 Excel 中。
用户只需要使用 Excel 的新 Py 函数在 Excel 单元格中输入 Python 代码即可,然后所有代码计算都会在 Microsoft 云服务器上运行,获得结果后再回传到 Excel 单元格中,包括任何绘图和数据可视化等。

http://pic1.zhimg.com/v2-39e55f8ed1bca0419e0eaf0da67d0384_r.jpg?source=1940ef5c
微软表示:
Excel 用户现在可以通过 Python 访问强大的分析功能,以实现可视化、数据清洗、机器学习、预测分析等功能。用户现在可以创建无缝结合 Excel 和 Python 的端到端解决方案,一切都在 Excel 中。
使用 Excel 内置连接器和 Power Query,用户可以轻松地将外部数据引入 Excel 工作流程中的 Python,然后再配合其他工具例如公式、数据透视表和 Excel 图表来处理数据。
目前支持 Python 的 Excel 版本是预览版,仅支持 Windows 系统,版本号为 16.0.16818.2000。测试完成后微软会将该功能推送到 Office 正式版,到时候 Microsoft 365 用户可以提前在公共预览阶段进行体验。
需要强调的是,Python 代码需要使用微软云服务器执行,因此该功能并不是免费的,某些功能可能需要额外付费才能使用。
最后,Excel 的 Python 功能目前存在一些数据大小和计算限制,这些限制将随着功能改进而逐渐放宽,而且 Python 也不仅可以用来分析数据,微软还表示未来可以改进编辑体验例如自动完成和语法突出显示等。
Python实操

如何用 Python 合并两个独立的电子表格

数据分析师经常要在许多电子表格上工作,当你要把这些文件合并在一起时,会比较麻烦。
下面的代码可以帮助你将两个独立的文件合并在一起:
import pandas as pd

# 读取两个 Excel 文件

file1 = pd.read_excel(&amp;#39;file1.xlsx&amp;#39;)file2 = pd.read_excel(&amp;#39;file2.xlsx&amp;#39;)

# 使用 concat() 方法合并两个文件
merged_file = pd.concat(, ignore_index=True)

# 将被合并的文件写入一个新的 Excel 文件
merged_file.to_excel(&amp;#39;merged_file.xlsx&amp;#39;, index=False)在这段代码中,我们首先导入 Pandas 库,我们将用它来读入和操作 Excel 文件。
然后,我们使用 read_excel() 方法来读入 file1.xlsx 和 file2.xlsx。接下来,我们使用 concat() 方法将这两个文件合并在一起。ignore_index=True 参数确保两个文件的索引值被重置,所以合并后的文件中不会出现重复的索引值。
最后,我们使用 to_excel() 方法将合并后的文件写入一个名为 merged_file.xlsx 的新 Excel 文件中。我们还设置了 index=False,以确保索引列不包括在输出文件中。
如何用 Python 导入和导出数据

这项任务涉及到使用 Python 库,如 Pandas,将 Excel 文件读入一个 DataFrame 对象。然后你可以用 Python 操作它,并对它进行分析。
你也可以使用同样的库将数据从 Python 导出到 Excel 文件中:
import pandas as pd
# 导入 Excel 文件

df = pd.read_excel(&amp;#39;filename.xlsx&amp;#39;, sheet_name=&amp;#39;Sheet1&amp;#39;)

# 导出到 Excel 文件
df.to_excel(&amp;#39;new_filename.xlsx&amp;#39;, index=False)以上代码导入了 Pandas 库,并从工作簿的 Sheet1 中读取一个名为 filename.xlsx 的 Excel 文件,将数据存储在一个名为 df 的 Pandas 数据框中。然后使用 to_excel 方法将数据框导出到一个名为 new_filename.xlsx 的新 Excel 文件中。index=False 参数用于排除输出文件中的行索引。
本质上,该代码使用 Pandas 将原始 Excel 文件的内容复制到一个新文件中。
如何使用 Python 清理和转换数据

这项任务涉及使用 Python 库,如 Pandas,来清理和转换 Excel 中的数据。
这可能包括删除重复的数据、根据特定标准过滤数据,以及对数据进行计算。
import pandas as pd

# 删除重复数据
df = df.drop_duplicates()

# Filter data
df = df &gt; 10]

# 执行计算
df[&amp;#39;new_column&amp;#39;] = df[&amp;#39;column1&amp;#39;] + df[&amp;#39;column2&amp;#39;]上面的代码片段使用 Pandas 库在一个名为 df 的 Pandas 数据框上执行数据清理和操作任务。
首先,它使用 drop_duplicates 方法从 df 中删除重复的行。其次,它通过选择 column_name 列的值大于 10 的行来过滤 df 数据框,并将过滤后的结果分配给一个名为 data_df 的新数据框。
最后,一个名为 new_column 的新列被添加到 df 中,其中包含 column1 和 column2 的数值之和。
总的来说,这段代码通过删除重复的数据、过滤特定的行,以及在原始数据框中添加新的计算列,有效地清理和处理了数据。
如何用 Python 进行数据分析

这项任务涉及使用 Python 库,如 Pandas 和 NumPy,对 Excel 数据进行数据分析。
这可能包括计算汇总统计,如平均值和标准差,或者通过基于特定标准的数据分组来创建自定义报告。
import pandas as pd
import numpy as np

# 计算汇总统计
df.describe()
# 创建自定义报告
df.pivot_table(values=&amp;#39;column_name&amp;#39;, index=&amp;#39;category_name&amp;#39;, columns=&amp;#39;date&amp;#39;)该代码利用 Pandas 和 NumPy 库,在名为 df 的 Pandas 数据框上执行数据分析和报告任务。
首先,它使用 describe 方法计算数据框中数字数据的汇总统计。这个方法对数据的分布、中心趋势和分散性产生了有价值的见解。
其次,代码使用 pivot_table 方法从数据框中创建自定义报告。这种方法总结和汇总了数据框中的数据,并可以产生各种格式的表格。
在这段代码中,它生成了一个新的数据框,其中 column_name 值被 category_name 和 date 列分组。
总的来说,这段代码在数据框上执行统计分析和报告任务,以便从数据中获得洞见。
如何用 Python 创建图表

这项任务涉及使用 Python 库,如 matplotlib 或 seaborn,从 Excel 数据中创建图表和图形。
你可以定制这些图表,以显示特定的数据,并将其格式化以满足特定的要求。
import pandas as pd
import matplotlib.pyplot as plt
# 创建条形图
df.plot(kind=&amp;#39;bar&amp;#39;, x=&amp;#39;category_name&amp;#39;, y=&amp;#39;sales&amp;#39;)
plt.show()
# 创建散点图
df.plot(kind=&amp;#39;scatter&amp;#39;, x=&amp;#39;column1&amp;#39;, y=&amp;#39;column2&amp;#39;)plt.show()该代码导入了两个库,Pandas 和 matplotlib.pyplot,分别使用别名 pd 和 plt。
然后,Pandas 的 plot 方法被用来创建两种类型的图。第一种类型的图是一个柱状图,显示 df 数据框中 category_name 和 sales 列之间的关系。
第二种类型的图是一个散点图,显示同一数据框中 column1 和 column2 列之间的关系。对柱状图使用参数 kind=&amp;#39;bar&amp;#39;,对散点图使用参数 kind=&amp;#39;scatter&amp;#39;。
最后,调用 show 方法来在屏幕上显示这些图。总之,这段代码用 Pandas 和 matplotlib 创建了一个条形图和一个散点图,以使 df 数据框中的数据可视化。
如何用 Python 做数据可视化

这项任务涉及使用 Python 库,如 Plotly 和 bokeh,从 Excel 数据中创建交互式数据可视化。
这些可视化允许用户以新的方式探索数据,例如通过放大特定的数据点或基于特定标准过滤数据。
import pandas as pd
import plotly.express as px
# 创建热力图
fig = px.imshow(df.corr())
fig.show()
# 创建折线图
fig = px.line(df, x=&amp;#39;date&amp;#39;, y=&amp;#39;sales&amp;#39;, color=&amp;#39;category&amp;#39;)
fig.show()该代码使用 Pandas 和 plotly.express 库来创建两种类型的可视化。首先,使用 plotly.express 的 imshow 方法创建一个热图,将 df 数据框中各列之间的关联性可视化。
其次,使用 plotly.express 的 line 方法创建一个折线图,显示 date 和 sales 列之间的关系,同时根据数据框的 category 列来区分类别。两个图都是用 show 方法显示的。
如何用 Python 自动生成报告

这项任务涉及到使用 Python 脚本来自动化从 Excel 数据生成报告的过程。
你可以设置这些脚本在一个定期的时间表上运行,比如每天或每周。它们也可以在有新数据时自动更新。
import pandas as pd
# 创建日报
df_daily = df == &amp;#39;2022-01-01&amp;#39;]
df_daily.to_excel(&amp;#39;daily_report.xlsx&amp;#39;, index=False)
# 创建周报
df_weekly = df.groupby(&amp;#39;category&amp;#39;).sum()
df_weekly.to_excel(&amp;#39;weekly_report.xlsx&amp;#39;, index=False)该代码通过创建一个新的数据框 df_daily 来创建一个日报,其中只包括 date 列等于 2022-01-01 的记录。这是通过使用 Pandas 的布尔索引功能实现的。
之后,使用 to_excel 方法将过滤后的数据导出到一个名为 daily_report.xlsx 的 Excel 文件中,其中不包括索引列。
接下来,代码通过将 df 数据框按 category 列分组,并将所有其他列的值相加来创建一个周报。这是用 Pandas 的 groupby 和 sum 方法完成的。
结果被保存在一个名为 df_weekly 的新数据框中。最后,to_excel 方法被用来将汇总的数据导出到一个名为 weekly_report.xlsx 的 Excel 文件中,其中不包括索引列。
总之,该代码使用 Pandas 库创建了两个报告。第一个报告是日报,只包括特定日期的数据,第二个报告是周报,按类别汇总数据。两份报告都使用 to_excel 方法导出为 Excel 文件。
如何用 Python 中的宏和脚本实现重复性任务的自动化

这项任务涉及使用 Python 来自动化 Excel 中的重复性任务,如数据输入或格式化。你可以通过创建可以自动执行的宏或脚本,或者通过使用 Python 与 Excel 应用程序直接交互来实现这一目标。
import win32com.client as win32
# 打开 Excel 文件
excel = win32.gencache.EnsureDispatch(&amp;#39;Excel.Application&amp;#39;)
workbook = excel.Workbooks.Open(r&amp;#39;filename.xlsx&amp;#39;)
# 运行 macro
excel.Application.Run(&amp;#39;macro_name&amp;#39;)
# 保存并关闭 Excel
fileworkbook.Save()workbook.Close()excel.Quit()该代码使用 win32com.client 模块,通过 Windows API 与 Microsoft Excel 进行交互。
首先,使用 EnsureDispatch() 方法打开一个 Excel 应用程序的实例,并使用 Workbooks.Open() 方法打开指定的 Excel 文件。
接下来,使用 Application.Run() 方法执行一个宏,并将宏的名称作为参数传递。
最后,用 Save() 方法保存对 Excel 文件的修改,用 Close() 方法关闭工作簿,用 Quit() 方法终止 Excel 应用程序。
如何用 Python 爬取数据

这项任务涉及使用 Python 库,如 request 和 Beautiful Soup,从网页或其他来源爬取数据并将其导入 Excel。
然后你可以使用 Python 库(如 Pandas)分析和处理这些数据。
import pandas as pd
import requests
from bs4 import BeautifulSoup
# 从网页爬取数据
url = &amp;#39;https://www.website.com/data&amp;#39;
response = requests.get(url)
soup = BeautifulSoup(response.text, &amp;#39;html.parser&amp;#39;)
table = soup.find(&amp;#39;table&amp;#39;)
df = pd.read_html(str(table))
# 导出数据到 Excel 文件
df.to_excel(&amp;#39;scraped_data.xlsx&amp;#39;, index=False)这段代码使用 requests 库向 URL “https://www.example.com” 发送 HTTP GET 请求。然后它使用 BeautifulSoup 库将响应的 HTML 内容解析成一个名为 soup 的 BeautifulSoup 对象。
然后你可以使用 BeautifulSoup 方法,如 find_all(),从 HTML 中提取特定数据:
links = []for link in soup.find_all(&amp;#39;a&amp;#39;):    href = link.get(&amp;#39;href&amp;#39;)    links.append(href)

这段代码找到了 HTML 中的所有锚点标签,并提取了每个锚点标签的 href 属性值,将它们添加到一个名为 links 的列表中。
如何使用 Python 将 Excel 与其他应用程序集成起来

这项任务涉及到使用 Python 将 Excel 与其他应用程序集成,如数据库或网络服务。
你可以使用 Python 库(如 pyodbc)连接到数据库,或者使用 API 连接到网络服务来做到这一点。这可以实现不同应用程序之间的无缝数据传输和分析。
import pandas as pd
import pyodbc
# 连接到数据库
cnxn = pyodbc.connect(&amp;#39;DRIVER={SQL Server};SERVER=server_name;DATABASE=db_name;UID=user_id;PWD=password&amp;#39;)
# 从数据库读取数据
query = &amp;#39;SELECT * FROM table_name&amp;#39;
df = pd.read_sql(query, cnxn)
# 导出到 Excel 文件
df.to_excel(&amp;#39;database_data.xlsx&amp;#39;, index=False)该代码使用 pyodbc.connect() 方法建立了与 SQL Server 数据库的连接,其中驱动程序、服务器名称、数据库名称、用户 ID 和密码被作为参数提供。
然后,使用 pd.read_sql() 方法定义并执行一个 SQL 查询,从数据库中的一个表中获取数据,其中 SQL 查询和连接对象被作为参数提供。检索到的数据会被存储在一个 pandas 数据框中。
最后,使用 to_excel() 方法将数据框中的数据导出到一个名为 database_data.xlsx 的 Excel 文件中,通过设置索引参数为 False,导出中不包含索引列。
总结

Python 是一种多功能的语言,你可以用它来实现许多 Excel 任务的自动化。你也可以使用各种库,如 Pandas、openpyxl、xlwings 和 pyautogui,来操作数据、提取信息、生成报告,并使重复性任务自动化。
但是对于大多数 Excel 用户来说,如果只是想做数据分析,学习 Python 的成本远比 BI 工具高得多,我更建议大家学习使用 BI 工具,比如微软的 Power BI 或者国内的 Fine BI 。

hjjandan 发表于 2023-9-26 02:07:43

2007年,微软推出 docx,xlsx,pptx 等一系列后缀添加 x 的升级版格式。
十五年后,2023年,依然还有大量用户使用与传播 doc,xls,ppt 格式的文档。依然还有很多商家,他们的 office 还是 office2003。
2023年微软在excel增加了python功能,我有理由相信,哪怕 2038 年,时间问题该爆的都爆了,依然还会有人在使用不支持 python 的 office 版本。
办公软件作为基础软件,其实大多数用户并没有频繁升级的动力。尤其是 Office 升级并不免费。这就注定了大量用户坚持使用旧版本。
当然,如果这个功能仅限 office 365 付费用户使用,那么它就无法得到足够的普及,也就不足以构建相应的生态。个人认为这是一个「反互联网」的玩法。
不过,也许我是错的,最终这个功能会被玩成什么样子,或许只有时间能证明。

bggxl 发表于 2023-9-26 02:08:28

微软最近几年的路线变了:不再打造生态,而是打造平台。
具体一点:
之前的微软,会为用户迁移制造门槛,从而将用户留在微软的产品体系当中。
现在的微软,会为用户迁移提供便利,你用Windows也好,用Mac也好,用Linux/Android也好,只要你愿意继续用微软产品,都会给你提供完善的服务。
比如:
Edge彻底抛弃微软自己的底层代码,拥抱Chromium内核 (开源)。
在苹果/谷歌上架Office套件。
.Net 分支 .Net Core脱离对Windows的依赖,Windows支持 Linux子系统,拥抱Linux (开源)。
AI方面与ChatGPT合作,Azure提供硬件支持。
Excel集成Python也是其中的一步。

goto 发表于 2023-9-26 02:09:20

这次的Python in Excel,代码是在云端隔离VM里运行的。Excel会把你表格的内容传到Azure VM,但执行代码的环境本身无法联网。
不在本地运行Python,微软说是避免宏病毒。而且从另一个角度看,云端运行保证了算力,也不用担心环境部署的问题,要用AI啥的也好办。就是无网或者数据敏感的场合就没法用了。
预览期间免费,未来不知道怎么收费,也不知道是不是跟Microsoft 365绑定。
另外从演示看,貌似Python代码只能写在公式里面。不知道如果我要写长一点的代码要怎么弄。
页: [1]
查看完整版本: 微软Excel宣布集成Python,对于这个消息,你怎么看?VBA是否还有用武之地?