c调用python gensim包_Jupyter Notebooks嵌入Excel并使用Python替代VBA宏

08a40727404fa144a38723a62407dfa4.png

以前,Excel和Python Jupyter Notebook之间我们只能选择一个。但是现在随着PyXLL-Jupyter软件包的推出,可以将两者一起使用。

在本文中,我将向你展示如何设置在Excel中运行的Jupyter Notebook。在这两者之间共享数据,甚至可以从Excel工作簿调用Jupyter笔记本中编写的Python函数!

开始

首先,要在Excel中运行Python代码,你需要使用PyXLL包。PyXLL使我们可以将Python集成到Excel中,并使用Python代替VBA。要安装PyXLL Excel加载项“ pip install pyxll”,然后使用PyXLL命令行工具安装Excel的加载项:

 >> pip install pyxll>> pyxll install

安装完PyXLL Excel插件,下一步就是安装PyXLL -jupyter软件包。该软件包提供了PyXLL和Jupyter之间的链接,因此我们可以在Excel内使用Jupyter笔记本。

使用pip安装pyxll-jupyter包:

 >> pip install pyxll-jupyter

一旦安装了PyXLL Excel加载项和PyXLL-Jupyter软件包后,启动Excel将在PyXLL选项卡中看到一个新的“ Jupyter”按钮。

ae4a1ad222eaeb4276dee4ce0454f162.png

单击此按钮可在Excel工作簿的侧面板中打开Jupyter笔记本。该面板是Excel界面的一部分,可以通过拖放操作取消停靠或停靠在其他位置。

在Jupyter面板中,你可以选择一个现有的笔记本或创建一个新的笔记本。要创建一个新的笔记本,请选择“新建”按钮,然后选择“ Python 3”。

f28e48ccc472f41e05e0e2a46abe9cd6.png

442a0b0c4b23a1c402fc469d0ec0996b.png

如何使用

现在,你已经在Excel中运行了完整的Jupyter笔记本!但是,这有什么好处呢?这比在Excel外部运行笔记本更好?

好了,现在你可以使用Excel处理数据,并使用Python处理相同的数据。将Excel用作用于组织和可视化数据的交互式操作,无缝切换到Python以使用更复杂的功能。

将Jupyter笔记本用作草稿板,以试用Python代码。在Jupyter笔记本上完全用Python编写Excel函数,并进行实时测试。开发完一个有用的可重用函数后,将其添加到PyXLL Python项目中。这样你每次使用Excel时都可以使用相同的函数。

在本文的其余部分,我将向你展示如何:

  • 使用Jupyter笔记本在Excel和Python之间共享数据

  • 在笔记本上写Excel工作表函数(udf)

  • 脚本Excel与Python代替VBA

从Excel获取数据到Python

因为PyXLL在与Excel相同的进程中运行Python,所以用Python访问Excel数据以及在Python和Excel之间快速调用。

为了使事情尽可能简单,pyxll-jupyter包附带了一些IPython“魔法”函数,可以在你的Jupyter笔记本中使用。

% xl_get

177bb58506862c2bdf986943070fa251.png

excel sheet 与 Pandas DataFrames 同步

使用魔术函数“%xl_get”来获取Python中当前的Excel选择。在Excel中创建数据表, 选择左上角(或整个范围),然后在Jupyter笔记本中输入“%xl_get”,瞧!Excel表现在是pandas DataFrame。

%xl_get魔术函数有几个选项:

  -c或--cell。传递单元格的地址以获取值,例如%xl_get --cell A1:D5。 -t或--type。指定获取值时要使用的数据类型,例如%xl_get --type numpy_array。 -x或--no-auto-resize。仅获取选定范围或给定范围的数据。不要扩展到包括周围的数据范围。

PyXLL还有其他与Excel交互以将数据读入Python的方式。“%xl_get”魔术功能只是使事情变得更简单!当Jupyter笔记本在Excel中运行时,所有其他方法(例如,使用XLCell类,Excel的COM API甚至xlwings)仍然可用。

提示:可以为魔术函数的结果分配一个变量!例如,尝试“ df =%xl_get”。

将Python中的数据移回Excel

从Python到Excel的另一种传输方式也可以正常工作。无论你是使用Python加载数据集并将其传输到Excel工作簿,还是通过Excel处理数据集并希望将结果返回Excel,从Python复制数据到Excel都很容易。

 %xl_set

08af2ef11112dec241603928bcd00d59.png

魔术函数“%xl_set”获取一个Python对象并将其写入Excel。在Excel中是否有想要的数据框“ df”?只需使用“%xl_set df”,它将被写入Excel中的当前选择。

与%xl_get一样,%xl_set也具有一系列选项来控制其行为。你甚至可以使用PyXLL的单元格格式设置功能在将结果写入Excel的同时自动应用格式设置。

 -c或--cell。将值写入的单元格地址,例如%xl_set VALUE --cell A1。-t或--type。将值写入Excel时要使用的数据类型说明符,例如%xl_set VALUE --type dataframe 。-f或--formatter。PyXLL单元格格式化程序对象,例如%xl_set VALUE --formatter DataFrameFormatter()。请参阅单元格格式。-x或--no-auto-resize。不要自动调整范围大小以适合数据。仅将值写入当前选择或指定范围。

与%xl_get一样,%xl_set只是一个快捷方式,你可能已与PyXLL一起使用的所有其他写回Excel的方式仍然可以在Jupyter笔记本中使用。

在Excel中使用Python图(matplotlib / plotly等)

关于数据处理的一大优点是可用的功能强大的绘图程序包。例如df.plot()

PyXLL集成了所有主要的绘图库,因此你也可以在Excel中充分利用它们。这包括matplotlib(由pandas使用),plotly,bokeh和altair。

 %xl_plot

817f33ce8871dafaaba06a7a035a413e.png

使用“%xl_plot”在Excel中绘制任何Python图表。从一个受支持的绘图库中向其传递任何图形对象,或使用最后一个pyplot图形。使用pandas plot的效果也很好,例如。%xl_plot df.plot(kind='scatter').

%xl_plot魔术函数具有一些选项来控制其工作方式:

  -n或--name。Excel中图片对象的名称。如果使用已经存在的图片名称,则该图片将被替换。 -c或--cell。用作新图片位置的单元格地址。如果图片已经存在,则无效。 -w或--width。Excel中图片的宽度(以磅为单位)。如果更新现有图片,则无效。 -h或--height。Excel中图片的高度(以磅为单位)。如果更新现有图片,则无效。

%xl_plot是pyxll.plot函数的快捷方式。

从Excel调用Python函数

你可以直接从Excel工作簿中调用Python函数,而不是在Excel和Jupyter之间不断移动数据然后运行一些Python代码

PyXLL的主要用例之一是用Python编写自定义Excel工作表函数(或“ UDF”)。这用于在使用Python函数构建的Excel中构建模型,这些函数当然可以使用其他Python库(例如pandas和scipy)。

你也可以在Jupyter笔记本中编写Excel工作表函数。这是在不离开Excel即可使用Python IDE的情况下尝试想法的绝佳方法。

自己试试吧。编写一个简单的函数,然后将“ pyxll.xl_func”修饰符添加到你的函数中:

 from pyxll import xl_func@xl_funcdef test_func(a, b, c):    # This function can be called from Excel!    return (a * b) + c

输入代码并在Jupyter中运行单元格后,即可立即从Excel工作簿中调用Python函数。

不只是简单的功能。你可以将整个数据范围作为pandas DataFrames传递给函数,并返回任何Python类型,包括numpy数组和DataFrames!你可以通过给@xl_func装饰器一个参数字符串来告诉PyXLL期望什么类型。

例如,尝试以下方法:

 from pyxll import xl_func# The "signature" tells PyXLL how to convert the arguments# and returned value.@xl_func("dataframe df: dataframe", auto_resize=True)def df_describe(df):    # 'df' is a pandas DataFrame built from the range passed    # to this function.    desc = df.describe()        # 'desc' is a new DataFrame, which PyXLL will convert to    # a range of values when returning to Excel.    return desc

现在,你可以编写复杂的Python函数来进行数据转换和分析,Excel中如何调用或排序这些函数。更改输入会导致调用函数,并且计算出的输出会实时更新,这与你期望的一样!

在Excel中使用Python而不是VBA的脚本

你是否知道在VBA中可以执行的所有操作也可以在Python中完成?编写VBA时将使用Excel对象模型,但是Python也提供相同的API。

在Excel中运行的Jupyter笔记本中,可以使用整个Excel对象模型,因此你可以使用与Excel VBA编辑器中完全相同的方式编写Excel脚本。

由于PyXLL在Excel进程内运行Python,因此从Python调用Excel不会对性能造成任何影响。也可以从外部Python进程调用Excel,但这通常要慢得多。在Excel中运行Jupyter笔记本也使一切变得更加便捷!

使用PyXLL的xl_app函数获取“ Excel.Application”对象,该对象等效于VBA中的Application对象。尝试进行诸如获取当前选择和更改单元格内部颜色之类的操作。弄清楚如何使用Excel对象模型进行操作的一种好方法是记录VBA宏,然后将该宏转换为Python!PyXLL文档页面Python作为VBA的替代品提供了一些有关如何做到这一点的技巧。

aaccf507a8d44742ebab060e37fbc3cc.png

总结

Python是VBA的强大替代品。使用PyXLL,你可以完全用Python编写功能齐全的Excel加载项。Excel是一种出色的交互式计算工具。添加Python和Jupyter将Excel提升到一个全新的水平。

使用Jupyter笔记本编写的代码可以轻松地重构为独立的Python包,以创建Excel工具包来为直观的工作簿和仪表板提供动力。任何Excel用户都将能够利用使用PyXLL编写的Python工具,而无需任何Python知识。

最后 PyXLL的官网地址:https://www.pyxll.com/blog/python-jupyter-notebooks-in-excel/

作者:Tony Roberts

原文地址:https://towardsdatascience.com/python-jupyter-notebooks-in-excel-5ab34fc6439

deephub翻译组

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/562165.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于java Springboot实现课程评分系统设计和实现

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、Java李杨勇公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】 🍅 欢迎点赞 👍 收藏 ⭐留言 &#x1f…

百度-Java中级面试题分享-

BeanFactory 和 ApplicationContext 有什么区别 > BeanFactory 可以理解为含有 bean 集合的工厂类。BeanFactory 包含了种 bean 的定义, 以便在接收到客户端请求时将对应的 bean 实例化。 > BeanFactory 还能在实例化对象的时生成协作类之间的关系。此举将 b…

1t硬盘怎么分区最好_win7系统硬盘怎么分区 win7系统硬盘分区步骤【介绍】

我们在使用win7系统的过程当中,经常都会把硬盘分成几个盘,不过因为一些原因,需要把硬盘进行重新分区,不过很多用户都不知道在不重装系统的情况下进行分区,那么win7系统硬盘如何分区呢?今天为大家分享win7系统硬盘分区…

京东-Java中级面试题分享-

1、哪些情况下的对象会被垃圾回收机制处理掉? 利用可达性分析算法,虚拟机会将一些对象定义为 GC Roots,从 GC Roots 出发沿着引用链向下寻找,如果某个对象不能通过 GC Roots 寻找到,虚拟机就认为该对象可以被回收掉。 …

斑能不能彻底去掉_淡妆能不能只用洗面奶卸掉?

淡妆能不能只用洗面奶卸掉?洗面奶能卸妆吗?洗面奶不可以卸妆。洗面奶一般只能清除掉水溶性的污垢,对于油性的彩妆卸效果不大。如果是化妆之后单纯地用洗面奶洁面的话,彩妆不能清除干净容易堵塞毛孔,造成毛孔粗大,皮肤粗糙。卸妆洁面二合一效果的洗面奶能够清除一部分彩妆,但是…

台式电脑连接宽带远程计算机没反应怎么办,怎么处理宽带连接提示连接被远程计算机终止?...

现在有很多人使用宽带拨号上网,有个小伙伴的宽带有一天就出现了宽带被远程计算机终止,这是怎么一回事呢?这样一来他的宽带就无法上网了,电脑没了网基本什么也干不了。请大家和小编一起来看看这个问题有什么好办法可以解决呢&#…

❤️六W字《计算机基础知识》(一)(建议收藏)❤️

计算机简介: 计算机(computer)俗称电脑,是现代一种用于高速计算的电子计算机器,可以进行数值计算,又可以进行逻辑计算,还具有存储记忆功能。是能够按照程序运行,自动、高速处理海量…

语言中要输出表格_C语言 | 表格输出若干人的信息

“要成为绝世高手,并非一朝一夕,除非是天生武学奇才,但是这种人…万中无一”——包租婆这道理放在C语言学习上也一并受用。在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从C语言小白进阶到高手,需要经历的是…

❤️六W字《计算机基础知识》(二)(建议收藏)❤️

上一篇: ❤️六W字《计算机基础知识》(一)❤️ 51、 Access是一种____数据库管理系统。 A、发散型 B、集中型 C、关系型 D、逻辑型 52、 用高级程序设计语言编写的程序,要转换成等价的可执行程序,必须经过____。 A、…

Oracle 数据怎么实时同步到 DM DB 达梦数据库 | 亲测干货建议收藏

摘要 很多 DBA 同学经常会遇到要从一个数据库实时同步到另一个数据库的问题,同构数据还相对容易,遇上异构数据、表多、数据量大等情况就难以同步。我自己亲测了一种方式,可以很方便地完成 Oracle 数据实时同步到 DM DB 达梦数据库&#xff0c…

datagrid底部显示水平滚动_看完《惊奇队长》等彩蛋,我想到了一个制作PPT滚动字幕的方法...

滚动字幕大家都不陌生,每每看完电影,影院亮灯的时候就能看到:电影片尾滚动字幕前两天去看了《惊奇队长》,在等彩蛋的过程中,看着一行行的字幕在面前滚动,我突然想到:这种滚动字幕式动画&#xf…

Oracle 数据怎么实时同步到 Elasticsearch | 亲测干货建议收藏

摘要: 很多 DBA 同学经常会遇到要从一个数据库实时同步到另一个数据库的问题,同构数据还相对容易,遇上异构数据、表多、数据量大等情况就难以同步。我自己亲测了一种方式,很快实现了Oracle 数据实时同步到 Elasticsearch&#xff…

pe估值 python_Python编程学习笔记(7)

欢迎关注我的公众号【小散逆袭大本营】学到目前这个程度,我们已经可以画出个股的PE和PB曲线图了。但是我们知道,对于个股来说,PE或者PB的参考价值很有限,不同类型企业,其PE的市场认可程度是不同。我们几乎不可能通过仅…

Oracle 数据怎么实时同步到 MongoDB | 亲测干货分享建议收藏

摘要: 很多 DBA 同学经常会遇到要从一个数据库实时同步到另一个数据库的问题,同构数据还相对容易,遇上异构数据、表多、数据量大等情况就难以同步。我自己亲测了一种方式,可以非常方便地完成 Oracle 数据实时同步到 MongoDB&#…

html css怎么连在一起,CSS秘密花园:连体字母_html/css_WEB-ITnose

《 CSS Secrets 》是 Lea Verou 最新著作,这本书讲解了有关于CSS中一些小秘密。是一本CSSer值得一读的一本书,经过一段时间的阅读,我、南北和彦子一起将在W3cplus发布一系列相关的读后感,与大家一起分享。和人一样,不是…

Oracle 数据怎么实时同步到 PgSQL | 亲测干货分享建议收藏

摘要: 这段时间负责一个老项目开发的数据库管理工作,这个项目中开发库与测试数据库分离,其中有些系统表数据与基础资料数据经常需要进行同步,相信很多 DBA 同学经常会遇到要从一个数据库实时同步到另一个数据库的问题,…

Oracle 数据怎么实时同步到 SQL Server | 亲测干货分享建议收藏

摘要: 很多 DBA 同学经常会遇到要从一个数据库实时同步到另一个数据库的问题,同构数据还相对容易,遇上异构数据、表多、数据量大等情况就难以同步。我自己亲测了一种方式,可以非常方便地完成 Oracle 数据实时同步到 SQL Server&am…

资阳停车场系统推荐_详细讲解停车场管理车牌识别系统安装

停车场管理系统现在基本都是车牌识别与无人值守了,车牌识别系统中道闸设备与摄像头该如何安装呢?今天给大家详细的介绍一下。直道安装直的车道是较理想的安装环境,车辆在驶入识别区域时,能够获得高质量的相片。1、施工时停车场车牌…

Oracle 数据怎么实时同步到 Kafka | 亲测干货分享建议收藏

摘要: 很多 DBA 同学经常会遇到要从一个数据库实时同步到另一个数据库的问题,同构数据还相对容易,遇上异构数据、表多、数据量大等情况就难以同步。我自己亲测了一种方式,可以非常方便地完成 Oracle 数据实时同步到 Kafka&#xf…

盲人如何学计算机编程,盲人程序员是如何编程的?

我是一个程序员,我也是一个盲人。我的世界中从来没有任何画面,我生来就看不见任何东西。每次新同事——那些从来没有经历过任何形式视力障碍的人——听说了我的事迹,常常会跑来问我以下这些问题:那么,你怎么读取别人的…