大家好,我是东哥。
常常给大家举荐好用的数据分析工具,也收到了铁子们的各种好评。这次也不例外,我要再举荐一个,而且是个爆款神器。
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 阐明文档。
https://www.pyxll.com/docs/us…
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 数据迷信
数据迷信学习网站:datadeepin