序言:

前面两篇介绍了在Excel中集成Python环境以及如何在Excel中如何通过PyXLL这个插件来加载Python函数;文章内容全部都是本地实操验证后记录。本次文章逐步进阶到实际使用层面;如何Excel中借助【Jupyter】这个软件来使用魔法函数进行数据分析。

在Excel文件中打开Jupyter

本文内容是建立在环境搭建完成,具体安装过程可以参看,也可以查阅其他网友提供的指南

  • 打开一个空的Excel,并通过工具导航栏 进入 “PyXLL Example Tab” 页 如下《图-1》


图-1:进入Jupyter模式

  • 点击Jupyter图标,打开Jupyter代码编辑器界面如下《图-2》


图-2:进入Jupyter代码编辑器界面

在Jupyter创建Python可执行文件

执行简单的打印函数:print()

  • 新建Python3代码编辑执行页面,如《下图-3》,点击右上角的“New”创建

图-3:新建Python3可执行文件

  • 进入代码编辑区,如图-4

图-4:代码编辑区

  • 编辑代码测试,如下图-5

简单打印一段文字,"欢迎阅读 初学系列-Python数据分析3编:Excel中使用魔法函数”,正常输出

print("欢迎阅读 初学系列-Python数据分析3编:Excel中使用魔法函数")

图-5:通过打印函数,打印一段文字

执行IPython中提供的魔法函数,读取Excel的数据

  • 从Excel读取数据到Python

#从Excel的当前表单读取数据到Python df = %xl_get df

Use the magic function “%xl_get” to get the current Excel selection in Python. Have a table of data in Excel? Select the top left corner (or the whole range) and type “%xl_get” in your Jupyter notebook and voila! the Excel table is now a pandas DataFrame.


图-6:读取Excel数据到Python


重点提示:

我这里在读取Excel数据时,并没有直接使用%xl_get函数读取,而是声明了df来接收,是有一定用意的,下面具体会说明。


  • 将Python中数据转移回Excel

#从Excel的当前表单读取数据到Python

%xl_set df

Transfering data the other way around, from Python to Excel, works just as well. Whether you’ve used Python to load a dataset and want to transfer it to your Excel workbook, or if you’ve manipulated a data set from Excel and want the results back in Excel, copying data to Excel from Python is easy.

为了方便观察,我在上《图-6》打开的Excel中原始数据空几行进行回填数据,执行魔法函数 %xl_set

图-7:执行魔法函数回填数据到Excel

问题记录

网上千篇一律的都是直接这样用,如下图8:、图9,应该是会出现执行报错,需要声明一个变量,df来接收get函数读取的DataFrame类型数据

图-8:直接石使用%xl_get

图-9:不使用df变量接收get数据,直接使用%xl_set df

py in (f, *a, **k) 185 # but it's overkill for just that one bit of state. 186 def magic_deco(arg): --> 187 call = lambda f, *a, **k: f(*a, **k) 188 189 if callable(arg): d:workdevtoolspythonideanaconda3libsite-packagespyxll_jupytermagic.py in xl_set(self, line) 28 argv = self._split_args(line) 29 args = self.xl_set.parser.parse_args(argv) ---> 30 value = eval(args.value, self.shell.user_ns, self.shell.user_ns) 31 32 xl = xl_app(com_package="win32com") in

起初,我按照网上很多网友介绍的用法,读取数据执行使用魔法函数:

%xl_get这样也可以正常打印数据,但是在进行回填,执行%xl_set df 代码时,执行报错了,很困惑,因为找了很多相关的文章介绍,千篇一律都是直接用的【%xl_get】,从Python回填数据到Excel直接使用【%xl_set df】,实际上这个df,并没有在代码里面声明接收数据,这是怎么能拿到这个变量呢,最开始我以为是我按照的Jupyter版本问题,Excel的问题,打算重装软件了,后来静下来想了一下get的时候没声明,怎么能拿到数据,因为自己也是初学,踩了坑,看到此文的同学们,能少走弯路。


总结

边自学边记录,难免会遇到各种问题,要善于思考

技术性的东西,一定要自己动手实操求证,看到的不一定就是这样