Python和EXCEL的爱情故事,要从wlxings说起。
就像阴霾中透出阳光,wlxings让EXCEL的友好界面与python的灵活强大结合在一起,给你飞行般的体验!
今天,我们让EXCEL真正飞起来。
安装 python
- 下载Python,下载入口为 https://www.python.org/downloads/,用户自行选择对应操作系统的版本就可以,比如,我用的是Windows x86-64 executable installer。
- 下载后,正常安装,保持默认项,下一步,再下一步,一直点到无处可点,你就完成了。
安装python依赖包
- xlwings是为Excel订制的插件,如果Python是匹奔腾桀骜的骏马,那么xlwings就是一块绝世马鞍,它可以让Excel驾驭住Python。
- Numpy是python中的一个科学运算库,为python提供矩阵功能,是python中科学计算的心脏
- Pandas是python的高级数据表模块,如果你觉得Excel的query,power pivot好用,在pandas面前,班门弄斧而已
- matplotlib,seaborn 是python的作图库,还有什么图是几行代码搞不定吗?
以上这些模块,为python提供了强大的动力,如果你对这些没概念,没关系,我初次接触时也是并不知道啥是啥,渐渐地,不知何时,却和他们成了老朋友
以上模块,均可通过pip
安装,方法为:
- 按
WIN + R
, 输入CMD
,回车 - 输入
pip install xlwings numpy matplotlib pandas seaborn
, 这一步出错请检查网络 - 输入
xlwings addin install
, 这一步出错请参考下面:
- 下载文件: xlwings.xlam
- 安装该文件:
开发工具 Developer > Excel加载项 Excel Add-in > 浏览 Browse > 选择下载的xlwings.xlam
如果你的EXCEL菜单栏没有开发工具 Developer
, 开启方式为文件 File > 选项 Options > 自定义功能区 Customize Ribbon
,Mac为:Cmd + , > Ribbon & Toolbar
完成这一步,我们的环境几乎OK,所有工具到齐,可以开始准备工作!如果以上步骤你看不懂,也没关系,照猫画虎,从模仿到超越,是走向成功必经之路。
创建文件并设置
-
创建EXCEL文件,并另存为xlsm格式(启用宏的xlsx),编写python脚本, 脚本需要与EXCEL文件同名
设置VBA项目的信任(仅需一次)
文件 File > 选项 Options > 信任中心 Trust Center > 信任中心设置 Trust Center Settings > 宏设置 Macro Settings > 信任对VBA工程对象模型的访问
在VBA中为Xlwings 添加引用
这一步很关键,它可以让你写的python函数,像=SUM()
,=AVERAGE()
等原生EXCEL函数一样,在EXCEL中使用,自己编写,随处调用
Windows:VBA editor > 工具 Tools > 引用 References...
, Mac:VBA editor的左下角
)
4.导入编写好的python模块
尽情调用
本文进行了简单的尝试,实现了以下功能:
- lmplot (seaborn)
- boxplot (seaborn)
- heatmap(seaborn)
- 保存图片( 6 * 6 inch, 300dpi) (开发工具 > 宏 > saveLastPlot)
所有的功能均在python脚本中定义好了,可在文末获取代码
lmplot
lmplot可以绘制散点图,并对散点进行linear regression, 这里的plotlm接受三个参数,第一个为整个数据表,第二个参数为X轴的数据,我们只需要把用于X轴的那一列数据的列名放进去就可以了,同理,第三列为Y轴数据的列名。
boxplot
boxplot可以查看不同类别的数据的分布, 这里的plotbox和plotlm一样,接受三个参数,分别为整个数据表,X轴数据的列名,Y轴数据的列名。X轴一般为某个分类,比如性别,班级,Y轴一般为某个连续变量,如成绩。这样我们方便地查看不同性别或者班级的成绩是否有差异。
Heatmap
Heatmap可以方便地查看矩阵数据, 比如我们常常需要画基因表达数据,蛋白表达数据,不同条件下的某些指标的变化等
保存图片
我写了一个 saveLastPlot
函数,可以方便的储存最后一次画的图,默认参数为6 * 6 inch, 300dpi
。
后记
学习python以来,我一直惊讶于python语言的优雅,代码效率之高超,也一直惋惜Excel没有python的灵活和方便,这可能就是图形化界面的弱势吧。
当我看到xlwings这个插件时,有一种阴霾中透出阳光的顿悟感,这才是EXCEL的最强形态啊,EXCEL的友好界面与python的灵活强大结合在一起,坐火箭也不过如此吧!哈哈哈。利用这个工具,我们可以让EXCEL真正飞起来。
身边一直有帅哥美女问我,如何学python,python难不难之类的问题,我认为这个插件可以是一个很好的契机,可以让你在学习之初就体验到python的强大,更有坚持下去的动力和可能。
从模仿到超越,是走向成功的必经之路。
先照猫画虎学起来,在使用中发现问题,解决问题,慢慢地,你会和python成为好朋友的。
关注 肖恩札记 微信公众号,获取示例材料。