如何把Python和Excel两大数据工具进行集成

这次我们会介绍如何使用xlwings将python和excel两大数据工具进行集成,更便捷地处理日常工作。
说起excel,那绝对是数据处理领域王者般的存在,尽管已经诞生三十多年了,现在全球仍有7.5亿忠实用户,而作为网红语言的python,也仅仅只有700万的开发人员。excel是全世界最流行的编程语言。对,你没看错,自从微软引入了lambda定义函数后,excel已经可以实现编程语言的算法,因此它是具备图灵完备性的,和javascript、java、python一样。虽然excel对小规模数据场景来说是刚需利器,但它面对大数据时就会有些力不从心。我们知道一张excel表最多能显示1048576行和16384列,处理一张几十万行的表可能就会有些卡顿,当然你可以使用vba进行数据处理,也可以使用python来操作excel。这就是本文要讲到的主题,python的第三方库-xlwings,它作为python和excel的交互工具,让你可以轻松地通过vba来调用python脚本,实现复杂的数据分析。
一、为什么将python与excel vba集成? vba作为excel内置的宏语言,几乎可以做任何事情,包括自动化、数据处理、分析建模等等,那为什么要用python来集成excel vba呢?主要有以下三点理由:
  1. 如果你对vba不算精通,你可以直接使用python编写分析函数用于excel运算,而无需使用vba;   2. python相比vba运行速度更快,且代码编写更简洁灵活;   3. python中有众多优秀的第三方库,随用随取,可以节省大量代码时间; 对于python爱好者来说,pandas、numpy等数据科学库用起来可能已经非常熟悉,如果能将它们用于excel数据分析中,那将是如虎添翼。
二、为什么使用xlwings? python中有很多库可以操作excel,像xlsxwriter、openpyxl、pandas、xlwings等。但相比其他库,xlwings性能综合来看几乎是最优秀的,而且xlwings可以实现通过excel宏调用python代码。
  安装xlwings非常简单,在命令行通过pip实现快速安装:
pip install xlwings 安装好xlwings后,接下来需要安装xlwings的 excel集成插件,安装之前需要关闭所有 excel 应用,不然会报错。同样在命令行输入以下命令:
xlwings addin install 出现下面提示代表集成插件安装成功。
xlwings和插件都安装好后,这时候打开excel,会发现工具栏出现一个xlwings的菜单框,代表xlwings插件安装成功,它起到一个桥梁的作用,为vba调用python脚本牵线搭桥。
  另外,如果你的菜单栏还没有显示“开发工具”,那需要把“开发工具”添加到功能区,因为我们要用到宏。步骤很简单:1、在文件选项卡上,转到自定义>选项。2、在“自定义功能区”和“主选项卡”下,选中“开发工具”复选框。
  菜单栏显示开发工具,就可以开始使用宏。如果你还不知道什么是宏,可以暂且把它理解成实现自动化及批量处理的工具。到这一步,前期的准备工作就完成了,接下来就是实战!
三、玩转xlwings 要想在excel中调用python脚本,需要写vba程序来实现,但对于不懂vba的小伙伴来说就是个麻烦事。但xlwings解决了这个问题,不需要你写vba代码就能直接在excel中调用python脚本,并将结果输出到excel表中。xlwings会帮助你创建.xlsm和.py两个文件,在.py文件里写python代码,在.xlsm文件里点击执行,就完成了excel与python的交互。怎么创建这两个文件呢?非常简单,直接在命令行输入以下代码即可:
xlwings quickstart projectname 这里的projectname可以自定义,是创建后文件的名字。
  如果你想把文件创建到指定文件夹里,需要提前将命令行导航到指定目录。创建好后,在指定文件夹里会出现两个文件,就是之前说的.xlsm和.py文件。
  我们打开.xlsm文件,这是一个excel宏文件,xlwings已经提前帮你写好了调用python的vba代码。按快捷键alt + f11,就能调出vba编辑器。
sub samplecall()    mymodule = left(thisworkbook.name, (instrrev(thisworkbook.name, ., -1, vbtextcompare) - 1))    runpython import  & mymodule & ; & mymodule & .main()end sub 里面这串代码主要执行两个步骤:
1、在.xlsm文件相同位置查找相同名称的.py文件 2、调用.py脚本里的main()函数我们先来看一个简单的例子,自动在excel表里输入['a','b','c','d','e']第一步:我们把.py文件里的代码改成以下形式。
import xlwings as xwimport pandas as pddef main():    wb = xw.book.caller()    values = ['a','b','c','d','e']    wb.sheets[0].range('a1').value = values@xw.funcdef hello(name):    return fhello {name}!if __name__ == __main__:    xw.book(pythonexceltest.xlsm).set_mock_caller()    main() 然后在.xlsm文件sheet1中创建一个按钮,并设置默认的宏,变成一个触发按钮。设置好触发按钮后,我们直接点击它,就会发现第一行出现了['a','b','c','d','e']。
  同样的,我们可以把鸢尾花数据集自动导入到excel中,只需要在.py文件里改动代码即可,代码如下:
import xlwings as xwimport pandas as pddef main():    wb = xw.book.caller()    df = pd.read_csv(re:\test\pythonexceltest\iris.csv)    df['total_length'] =  df['sepal_length'] + df['petal_length']    wb.sheets[0].range('a1').value = df@xw.funcdef hello(name):    return fhello {name}!if __name__ == __main__:    xw.book(pythonexceltest.xlsm).set_mock_caller()    main()   好了,这就是在excel中调用python脚本的全过程,你可以试试其他有趣的玩法,比如实现机器学习算法、文本清洗、数据匹配、自动化报告等等。excel+python,简直法力无边。

苹果arcade是什么?
vivoX9Plus拍照怎么样 在自拍手机中难逢敌手
如何构建更好的电池存储方案?
学后端的学前端有必要吗?
测温热像仪的煤矿应用分析
如何把Python和Excel两大数据工具进行集成
AOI在PCB检测中的应用
三星智能传感器系统降低对外国传感器依赖,自主控制半导体工艺
关于英飞凌汽车电子生态圈理念及规模的分析和介绍
超声波传感器的特性及工作原理
“世界第一”成功晋级,海信激光电视见证比利时击败卫冕冠军葡萄牙
NOISEKEN ESS-2000 静电放电发生器
PCB layout中的走线设计
Spring Boot如何实现日志链路追踪
贵州大力推动大数据发展,构建开放体系完善物流促进外贸推动“外循环”
中国第3代半导体半导体理想封装材料——高导热氮化硅陶瓷基板突破“卡脖子”难题
深度学习聚类的综述
Dropout如何成为SDR的特殊情况
以太网的三件事您应了如指掌
F192万用示波器的应用特点和多种带宽选择介绍