Anaconda Code #

Anaconda Code 使您能够在 Excel 中直接编写 Python 代码并本地运行。这使您可以灵活地控制工作簿中的 Python 环境,允许您根据需要添加和删除包,同时确保代码和数据在工作簿内的安全。

初始化 Anaconda Code#

注意

Anaconda Code 包含在 Anaconda Toolbox 安装程序 中。

Anaconda Code 由 PyScript 提供支持,PyScript 是我们的开源平台,用于在浏览器中运行 Python。首次启动 Anaconda Code 时,请按照以下步骤设置并运行您的 PyScript Python 环境

  1. 点击启用 PyScript

  2. 启用 PyScript 后,登录到 Anaconda Cloud

了解 Anaconda Code#

让我们使用以下内容查看 Anaconda Code 中的不同元素 仪表板选项卡作为参考

  1. 仪表板

    创建并运行 Python 代码 并查看脚本日志

  2. 导入和定义

    自定义代码,该代码会影响工作簿中的所有代码

  3. 环境

    管理包和 Pyodide 版本,用于您的编码环境

  4. 设置

    修改运行代码的默认设置

  5. 帐户

    查看个人资料、订阅和应用程序详细信息

  6. 代码

    查看和编辑代码,遍布您的工作簿

  7. 日志

    查看错误和打印语句

  8. 更多

    快速确认您的代码的单元格链接状态

  9. 新代码

    创建新代码以在您的工作簿中运行

运行 Python 代码#

创建一个可以运行 Python 代码的 Anaconda Code 单元格,使用以下步骤

  1. 仪表板中,点击 新建,然后选择要插入代码的单元格。或者,选择一个单元格,键入 =ANACONDA.CODE(,然后按 Enter (Windows)/Return (Mac)。

  2. 在代码编辑器中输入您的 Python 代码。如果您想引用电子表格中的数据范围或Anaconda Code 对象在您的代码中,点击 链接范围并选择单元格范围或 PyScript 数据单元格。

    使用 REF 函数

    当您使用 链接范围时,Anaconda Code 会在您的代码中创建一个 REF 函数,该函数返回列表的列表。导入和定义 选项卡包含以下预定义函数,以帮助将返回的列表的列表转换为不同的数据结构。

    函数

    用例

    注释

    to_df(REF(<CELL_RANGE>))

    创建 DataFrame

    to_df 假定您的数据包含标题

    to_array(REF(<CELL_RANGE>))

    创建 NumPy 数组

    to_array 假定所有数据类型相同

    to_list(REF(<CELL_RANGE>))

    创建一维列表

    to_list 处理宽(1 x n)或高(n x 1)数据

    您可以从导入和定义选项卡更改 to_df()to_array()to_list() 的行为。

  3. 设置单元格链接和输出选项

    注意

    通过点击 插头按钮,在隔离链接模式之间切换。

  4. 点击保存并运行

所选单元格现在是 Anaconda Code 单元格。Anaconda Code 单元格运行您的代码并显示最后一个表达式的返回值。

注意

如果您编写的代码没有返回值(例如,您定义了一个函数但没有调用该函数)并点击运行,则单元格将显示“None”。

编辑 Python 代码#

请勿在单元格本身中编辑您的代码;而是直接在 Anaconda Code 中修改并重新运行您的代码。

注意

Anaconda.cloud 帐户是用户编辑共享代码所必需的。

  1. 仪表板,点击 在完整视图中编辑以打开编辑视图。

  2. 调整您的代码,然后点击运行

管理环境#

Anaconda Code 托管一个独立的、自包含的环境,该环境管理后端软件包,使您能够在 Excel 工作簿中运行 Python 代码。您可以管理此环境中的软件包以扩展 Python 的处理、可视化和分析功能,甚至可以选择您想要运行 Python 的 Pyodide 版本(PyScript 使用的 WASM 引擎)。

注意

您可以随时更改您的环境;但是,与所有软件项目一样,更改环境会改变底层代码的解释方式,并可能导致意想不到的复杂情况。

选择 Pyodide 版本#

默认情况下,最新版本的 Pyodide 用于所有新电子表格。对于现有电子表格,您的代码所需的 Pyodide 和软件包版本会固定到该环境。

您可以使用以下步骤切换 Pyodide 版本

  1. 环境选项卡中,点击 编辑.

  2. 要切换 Pyodide 版本,请点击 当前 Pyodide 版本旁边的下拉菜单。

管理软件包#

  1. 环境选项卡中,点击 编辑.

  2. 要添加新包,请点击 添加。或者,点击箭头从 PyPI、PyScript 应用程序或 Python wheel 的直接下载链接(.whl)添加。

注意

包含编译代码的软件包可能与 PyScript 的 WASM 引擎不兼容。有关更多信息,请访问 PyScript.net

要删除软件包,请点击 要删除的软件包旁边的删除

自定义代码初始化#

您可以将 Anaconda Code 的导入和定义视为代码的初始化文件,或者类似于 Jupyter Notebook 中的第一个单元格。本节中的所有代码都可用于所有单元格,无论它们是隔离运行还是链接运行

导入

要自定义代码的导入

  1. 导入和定义选项卡上,通过在 # Add imports 注释下方添加您的导入语句,建立与运行代码所需的软件包的连接。

    注意

    您只能从标准 Python 安装中包含的软件包以及环境选项卡中列出的软件包中 import

  2. 点击运行

定义

要自定义代码的定义

  1. 导入和定义选项卡中,在 # Define classes and functions 注释下方输入您要定义的任何类或函数。

    注意

    Anaconda 代码附带三个预定义函数:to_df(data)to_array(data)to_list(data)。请参阅运行 Python 代码以了解有关使用这些函数的更多信息。

  2. 点击运行

现在,您可以在 Anaconda 代码编辑器中调用您的定义。要直接从 Excel 单元格调用函数,请按照创建用户自定义函数中的步骤操作。

创建用户自定义函数#

用户自定义函数 (UDF) 允许您编写 Python 函数,对其进行装饰,并直接从 Excel 中调用它们。

创建和调用 UDF

  1. 导入和定义选项卡中,使用 @UDF 装饰一个函数,如下例所示

    @UDF
    def my_custom_function(x, y):
        return x ** y
    
  2. 点击保存并运行

  3. 在打开的单元格中,输入 =ANACONDA。如果您将上面的示例添加到您的定义列表,则调用 ANACONDA.MY_CUSTOM_FUNCTION 的选项将出现在下拉列表中。

  4. 向下箭头到 ANACONDA.MY_CUSTOM_FUNCTION,按 Tab 键,然后完成函数。

  5. 使用 Ctrl+Enter (Windows)/Ctrl+Return (Mac) 运行代码。

提示

如果您希望 UDF 使用函数名称以外的名称,请使用 name 参数来提供唯一的名称。将 nested 设置为 False 以从名称中删除 ANACONDA.

@UDF(name="MYBANK.PORTFOLIO_ANALYSIS", nested=False)
def my_custom_function(x, y):
    return x ** y

使用 Range 参数

指定 UDF.Range 参数会告诉 Excel 函数的输入或输出是 2D 范围。如果不指定此项,Excel 将拒绝传递单元格范围作为输入或允许从函数返回溢出范围。

.Range 的示例用法

@UDF
def square_me(data: UDF.Range) -> UDF.Range:
    return [[val ** 2 for val in row] for row in data]

您还可以为 Range 添加类型提示,例如使用 UDF.Range[str]

修改工作簿设置#

虽然您可以在创建和编辑代码时根据具体情况调整工作簿中运行代码的设置,但您也可以从设置选项卡分配默认设置。

单元格链接#

模式

描述

独立运行

代码独立于其他单元格运行。无法引用先前 Anaconda 代码单元格中声明的变量。其他单元格可以通过 REF 函数引用返回值。

链接运行

Anaconda 代码单元格以行主序运行,类似于 Excel 中 Python 的执行方式。在一个单元格中声明的变量可以在初始化它们的单元格之后的单元格中引用。当计算一个单元格时,所有链接的单元格都按顺序重新计算。链接的单元格从左到右、从上到下运行,并且可以访问先前链接的单元格中定义的对象。

单元格输出#

输出

描述

Excel 值

当输出 DataFrame、数组、列表等时,这些值将“溢出”以填充所需的空间。如果溢出将覆盖包含数据的单元格,则单元格将显示 #SPILL 错误。

本地 Python 对象

对于某些对象类型,您可以通过单击单元格在“卡片视图”中查看内容。您可以像引用任何其他 Python 对象一样引用此单元格和返回的对象。

故障排除#

如果您遇到此处未列出的问题,您可以通过 Anaconda 社区或通过打开支持票单来获得 Anaconda 的支持。

安装函数时出错#

原因

当 Excel 加载 Anaconda Toolbox 加载项并注册其自定义函数时,可能会发生此错误。此错误发生在 Excel 内部,Anaconda Toolbox 无法解决。

解决方案

关闭并重新打开 Excel。如果问题仍然存在,请卸载 Anaconda Toolbox 加载项,然后重新安装。