• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

再见-VBA神器工具统一-Excel-和-Python

python 搞java代码 3年前 (2022-07-26) 73次浏览 已收录 0个评论
文章目录[隐藏]

常常给大家举荐好用的数据分析工具,也收到了铁子们的各种好评。这次也不例外,我要再举荐一个,而且是个爆款神器。

ExcelJupyter Notebok都是我每天必用的工具,而且两个工具常常协同工作,始终以来工作效率也还算不错。但说切实,毕竟是两个工具,应用的时候必定会有一些切换的老本。

最近,在逛GitHub忽然发现了一款神器「PyXLL-Jupyter」,它能够完满将Jupyter Notebook嵌入到Excel中!是的,你没听错,应用它咱们就可在Excel中运行Jupyter Notebook,调用Python函数,实现数据共享。

一、装置

首先,想要在Excel中运行Python代码,须要装置PyXLL插件。PyXLL能够将Python集成到Excel中,用Python代替VBA

先用 pip 装置 PyXLL

pip install pyxll

而后再用PyXLL独特的命令行工具装置Excel插件。

>> pyxll install

装置好了PyXLL在 Excel中的插件,下一步就是装置pyxll-jupyter软件包了。应用pip装置pyxll-jupyter软件包:

pip install pyxll-jupyter

装置结束后,启动Excel,将在PyXLL选项卡中看到一个新的Jupyter按钮。

单击此按钮可在Excel工作簿的侧面板中关上Jupyter Notebook。该面板是Excel界面的一部分,能够通过拖放操作勾销停泊或停靠在其余地位。

在Jupyter面板中,你能够抉择一个现有的Notebook或创立一个新的Notebook。创立一个新的Notebook,抉择新建按钮,而后抉择Python 3

二、应用办法

这样做有什么用途呢?

1、Excel和Python共享数据

比方,咱们要将数据从Excel导入Python。**

因为Excel和Python曾经在同一过程中运行了,所以在Python中拜访Excel数据以及在Python和Excel之间切换十分快。

更牛X的是,pyxll-jupyter还独自附带了一些IPython魔法函数,输出后一键即可实现同步。

%xl_get

将Python中的数据移到Excel,也是同理,非常简单。

无论是应用Python先加载数据集,再传输到Excel,还是其它模式,从Python复制数据到Excel非常容易。

%xl_set

当然,%xl_get%xl_set都附带参数选项能够自定义导入导出规则。

2. 在Excel中应用Python绘图

PyXLL的另一大用处就是它集成了简直所有支流的可视化包,因而咱们能够在Excel中利用这些可视化包随便绘图,包含matplotlibplotlybokehaltair等。

%xl_plot

同样,应用魔法函数%xl_plot在Excel中能够绘制任何的Python图。任何一个受反对的可视化包也可进行绘图而后传递图形对象到Excel中,比方上图中应用pandas的绘图成果就很好。

%xl_plot df.plot(kind='scatter')

3. 从Excel调用Python函数

应用Excel离不开函数,而当咱们须要一些简单性能时,自带函数未必能满足咱们的需要。

通过PyXLL,咱们能够间接在Excel中调用Python函数,并对其进行实时测试。这就防止了Excel和Jupyter之间的来回切换老本,有点像dataframe的apply用法,写个函数间接与Excel完满交融。

函数写好后,还可将其增加到PyXLL Python我的项目中。这样当前每次都能够复用实现雷同性能,几乎不要太香!

from pyxll import xl_func

@xl_func
def test_func(a, b, c):
    return (a * b) + c

比方,输出以上代码在Jupyter中运行后,Python函数将立刻可被Excel工作簿调用。

不只是简略的函数,还能够将整个数据作为pandasDataFrames传给函数,并返回任何的Python类型,比方numpy arrayDataFrames,甚至还能够通过给@xl_func装璜器一个签名字符串来通知PyXLL输入什么类型。例如,以下函数:

from pyxll import xl_func

# 装璜器签名通知 PyXLL 如何转换函数参数和返回的值
@xl_func("dataframe df: dataframe<index=True>", auto_resize=True)
def df_describe(df):
    # df 是一个从数据集里创立的 pandas DataFrame 传递给函数
    desc = df.describe()
    # desc 是新的 DataFrame(PyXLL转换为一组值并返回给Excel所创立的)
    return desc

当初能够编写简单的Python函数来进行数据转换和剖析,然而能够协调在Excel中如何调用或排序这些函数。更改输出会导致调用函数,并且计算出的输入会实时更新,这与咱们冀望的一样。

4. 代替VBA

VBA脚本所需的性能函数,在Python中均有雷同的API。这对于相熟Python但不相熟VBA的同学相对是个好消息。

官网还给出了和VBA性能一样的API阐明文档。

Jupyter Notebook在Excel中运行,整个Excel对象都可用,所有操作就像在VBA编辑器中编写Excel脚本截然不同。

因为PyXLL在Excel过程内运行Python ,因而从Python调用Excel不会对性能造成任何影响。当然,也能够从内部Python过程调用Excel,但这通常要慢很多。在Excel中运行Jupyter Notebook,所有变得就不一样了!

应用PyXLLxl_app函数获取Excel.Application对象,该对象等效于VBA中的Application对象。弄清楚如何应用Excel对象模型进行操作的一种好办法是记录VBA宏,而后将该宏转换为Python

下图中尝试将以后抉择单元格更改色彩。

三、总结

PyXLL将完满交融PythonExcel,实现了以下性能,为表格数据处理晋升一个全新的高度。

  • Excel和Python共享数据
  • 在Excel中应用Python绘图
  • 从Excel调用Python函数
  • 代替VBA脚本

不得不说这个工具是真的香,青睐Python的同学能够不必学习VBA了,Python脚本打天下。

以上就是本次分享的所有内容,如果你感觉文章还不错,欢送关注公众号:Python编程学习圈,每日干货分享,发送“J”还可支付大量学习材料,内容笼罩Python电子书、教程、数据库编程、Django,爬虫,云计算等等。或是返回编程学习网,理解更多编程技术常识。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:再见-VBA神器工具统一-Excel-和-Python

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址