常常给大家举荐好用的数据分析工具,也收到了铁子们的各种好评。这次也不例外,我要再举荐一个,而且是个爆款神器。
Excel
和Jupyter 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中利用这些可视化包随便绘图,包含matplotlib
、plotly
、bokeh
和altair
等。
%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工作簿调用。
不只是简略的函数,还能够将整个数据作为pandas
的DataFrames
传给函数,并返回任何的Python类型,比方numpy array
、DataFrames
,甚至还能够通过给@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
,所有变得就不一样了!
应用PyXLL
的xl_app
函数获取Excel.Application
对象,该对象等效于VBA
中的Application
对象。弄清楚如何应用Excel对象模型进行操作的一种好办法是记录VBA
宏,而后将该宏转换为Python
。
下图中尝试将以后抉择单元格更改色彩。
三、总结
PyXLL
将完满交融Python
和Excel
,实现了以下性能,为表格数据处理晋升一个全新的高度。
- Excel和Python共享数据
- 在Excel中应用Python绘图
- 从Excel调用Python函数
- 代替VBA脚本
不得不说这个工具是真的香,青睐Python的同学能够不必学习VBA了,Python脚本打天下。
以上就是本次分享的所有内容,如果你感觉文章还不错,欢送关注公众号:Python编程学习圈,每日干货分享,发送“J”还可支付大量学习材料,内容笼罩Python电子书、教程、数据库编程、Django,爬虫,云计算等等。或是返回编程学习网,理解更多编程技术常识。