当前位置: 首页 > 后端技术 > Python

再见VBA!神器工具UnifiedExcelandPython

时间:2023-03-26 11:21:09 Python

经常给大家推荐好用的数据分析工具,也收到各种讽刺的好评。这次也不例外,我要再推荐一款,而且是大热单品。Excel和JupyterNotebook都是我每天必用的工具,而且这两个工具经常配合使用,工作效率一直都不错。不过说实话毕竟是两个工具,使用的时候肯定会有一些切换成本。最近在浏览GitHub的时候突然发现一个神器“PyXLL-Jupyter”,可以完美的把JupyterNotebook嵌入到Excel中!是的,你没听错,我们可以用它在Excel中运行JupyterNotebook,调用Python函数,实现数据共享。一、安装首先,如果要在Excel中运行Python代码,需要安装PyXLL插件。PyXLL可以将Python集成到Excel中,用Python代替VBA。首先用pip安装PyXLL。pipinstallpyxll然后使用PyXLL独特的命令行工具安装Excel加载项。>>pyxllinstall在Excel中安装好PyXLL插件之后,接下来就是安装pyxll-jupyter包了。使用pip安装pyxll-jupyter包:pipinstallpyxll-jupyter安装后,启动Excel,您将在PyXLL选项卡中看到一个新的Jupyter按钮。单击此按钮可在Excel工作簿的侧面板中打开JupyterNotebook。该面板是Excel界面的一部分,可以通过拖放取消停靠或停靠在其他地方。在Jupyter面板中,您可以选择现有笔记本或创建新笔记本。新建一个Notebook,选择New按钮,选择Python3。二、using方法有什么用?1、Excel和Python共享数据比如我们要将Excel中的数据导入到Python中。**由于Excel和Python已经在同一个进程中运行,所以在Python中访问Excel数据和在Python和Excel之间切换都非常快。更神奇的是pyxll-jupyter还单独自带了一些IPython的神奇功能,输入后可以一键完成同步。%xl_get将Python中的数据移动到Excel中,同样如此,很简单。无论您是使用Python加载数据集然后将其传输到Excel还是其他,将数据从Python复制到Excel都非常容易。%xl_set当然,%xl_get和%xl_set都带有参数选项,可以自定义导入导出规则。2、使用Python在Excel中绘图PyXLL的另一个大用处是它集成了几乎所有主流的可视化包,所以我们可以使用这些可视化包在Excel中自由绘图,包括matplotlib、plotly、bokeh、altair。%xl_plot同样,任何Python图形都可以使用魔法函数%xl_plot在Excel中绘制。任何一个受支持的可视化包也可以进行绘图,然后作为图形对象传递给Excel,例如上图中使用pandas的绘图效果很好。%xl_plotdf.plot(kind='scatter')3.从Excel调用Python函数使用Excel离不开函数,当我们需要一些复杂的函数时,内置的函数可能不能满足我们的需要。借助PyXLL,我们可以直接在Excel中调用Python函数,并进行实时测试。这样就避免了在Excel和Jupyter之间来回切换的成本,有点像dataframe的apply用法,写个函数直接和Excel完美集成。编写函数后,还可以将其添加到PyXLLPython项目中。这样以后每次都可以复用同一个函数,简直不要太香!frompyxllimportxl_func@xl_funcdeftest_func(a,b,c):return(a*b)+c例如输入上述代码,在Jupyter中运行后,Python函数会立即被Excel工作簿调用。不仅仅是简单的函数,您可以将整个数据作为pandasDataFrames传递给函数并返回任何Python类型,例如numpy数组、DataFrames,甚至通过为@xl_func装饰器提供签名字符串类型来告诉PyXLL要输出什么。例如下面的函数:frompyxllimportxl_func#装饰器签名告诉PyXLL如何转换函数参数和返回值@xl_func("dataframedf:dataframe",auto_resize=True)defdf_describe(df):#df是一个pandasDataFrame,由传给函数的数据集创建desc=df.describe()#desc是新的DataFrame(由PyXLL创建,转换为一组值并返回给Excel)returndescnowcan编写用于数据转换和分析的复杂Python函数,但可以协调这些函数在Excel中的调用或排序方式。更改输入会导致函数被调用,并且计算出的输出会实时更新,正如我们所期望的那样。4.替换VBAVBA脚本所需的函数在Python中具有相同的API。这对于熟悉Python但不熟悉VBA的同学来说绝对是个福音。官网也给出了和VBA函数一样的API文档。JupyterNotebook在Excel中运行,整个Excel对象可用,所有操作与在VBA编辑器中编写Excel脚本完全一样。由于PyXLL在Excel进程中运行Python,因此从Python调用Excel不会影响性能。当然,也可以从外部Python进程调用Excel,但这通常要慢得多。在Excel中运行JupyterNotebook让一切变得不同!使用PyXLL的xl_app函数得到一个Excel.Application对象,相当于VBA中的Application对象。弄清楚如何使用Excel对象模型做事的一个好方法是记录一个VBA宏,然后将该宏转换为Python。下图尝试更改当前选定单元格的颜色。三、总结PyXLL将Python与Excel完美结合,实现以下功能,将表格数据处理提升到一个新的高度。Excel和Python共享数据。使用Python在Excel中绘图。从Excel而不是VBA脚本调用Python函数。不得不说这个工具真的很好吃。爱Python的同学不用学VBA,Python脚本一统天下。以上就是本次分享的全部内容。觉得文章还不错的话,请关注公众号:Python编程学习圈,每日干货分享,发送“J”还能收到海量学习资料,涵盖Python电子书和教程,数据库编程、Django、爬虫、云计算等。或者去编程学习网了解更多编程技术知识。