经常给大家推荐好用的数据分析工具,也收到了铁子们的各种好评。这次也不例外,我要再推荐一个,而且是个爆款神器。
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/userguide/vba.html
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脚本打天下。
原文标题:再见 vba!神器工具统一 excel 和 python
文章出处:【微信公众号:人工智能与大数据技术】欢迎添加关注!文章转载请注明出处。
求一种新能源电池冷却液液位监测方案
一文看懂光热发电和光伏发电的区别
如何在PC上模拟树莓派
三星携手ASML开发下一代EUV光刻机方面的合作
LED市场怎么了 各大LED上市企业掀起回购潮
统一Excel和Python的神器数据分析工具
IC设计工程师想了解的RISC-V知识点分享
小芯片设计让AMD处理器更便宜
买冰箱时 选单开门还是双开门有窍门
推荐一些适合学生党而且音质也可媲美有线的蓝牙耳机
微软Xbox Series X/S将到明年4月一直缺货
2019年9月国内手机市场报告发布,整体出货量同比下降7.1%
济南能华:直流远程供电设备系统在高速公路场外供电的应用
区块链技术对征信的重要性被高估了
接近传感器的经典应用详解
开源了!Win10 计算器已被移植到 Linux 系统上
氮化镓工艺缺点有哪些
数据链路层的主要功能
芯片未来十年的发展趋势
二维材料及其拉曼光谱表征