​​​​​​​从版本 2407 (内部版本 17830.20128) 开始,Excel 中的 Python 正在向在 Windows 上运行当前频道的企业和企业用户推出。 从版本 2405 (内部版本 17628.20164) 开始,在 Windows 上运行当前频道的家庭和个人用户可以使用预览版。 通过 Microsoft 365 预览体验计划运行当前频道 (预览版) 的教育用户可以使用 Excel 中的 Python 预览版。 ​​​​​​​

它将首先推出到 Excel for Windows,然后在以后推出到其他平台。 有关更多可用性信息,请参阅 Excel 中的 Python 可用性

如果在 Excel 中遇到 Python 问题,请选择“ Excel 中的帮助 > 反馈 ”进行报告。

不熟悉 Excel 中的 Python? 从 Excel 中的 Python 简介Excel 中的 Python 入门开始。

使用开源 Python 库创建绘图和图表 

Excel 中的 Python 附带 Anaconda 提供的一组核心 Python 库。 本文介绍如何使用 Python 库(如 seaborn和 matplotlib)创建绘图和图表。 若要详细了解 Excel 中 Python 提供的开源库,请参阅 Excel 中的开源库和 Python。 

本文中的示例使用 Iris 花数据集。 下载此示例工作簿,并遵循以下文章: python-in-excel-iris-dataset.xlsx。 

使用 seaborn 创建一对绘图 

此示例演示如何创建鸢尾花数据集的对图可视化效果。 对图是绘图和图表的矩阵,用于比较数据集中每个变量之间的关系。 在这种情况下,鸢尾花数据集包含四列数值数据: sepal_lengthsepal_widthpetal_lengthpetal_width。 

在 Excel 中使用 Python 创建具有 seaborn 库的对图。

Excel 中的 Python 使用 seaborn库创建可视化效果。 使用以下导入语句在 Excel 中自动导入用于 Python 的 seaborn库,以便使用别名 sns 引用它。  

import seaborn as sns 

若要使用 seaborn 库创建鸢尾花数据集的对图,请执行以下步骤:

  1. 在 Excel 中的 Python 单元格中输入以下代码片段。 代码片段将配对图存储为名为 pairplot 的变量。  它使用 seaborn 库别名 sns 和 seaborn 函数 对plot 创建对图。 pairplot = sns.pairplot(xl("Table1[#All]", headers=True)) 作为 pairplot 函数的参数,代码片段使用自定义 Python 函数 xl () 并引用工作表中的第一个表 Table1。 它包括整个表内容 (为 [#All]) ,并指出表包含标题行 (标头= True) 。 在此示例中,工作表中的 Table1 包含 Iris 数据集。 请参阅数据帧中的对图预览。

    注意: 如果遇到任何错误,请参阅 排查 Excel 中的 Python 错误 ,了解详细信息。 

  2. 提交 Python 公式后,Excel 中的 Python 将在图像对象中返回对图可视化效果。 选择图像对象单元格中的卡图标以查看可视化效果的预览。 请参阅 DataFrame 卡中的绘图预览。

  3. 将可视化效果保留为 Image 对象,以继续使用它进行 Python 计算。 将图像提取到 Excel 网格以调整其大小并更详细地查看每个绘图。 若要将图像提取到网格中,请右键单击或 Ctrl+单击包含图像对象的单元格,然后从菜单中选择“ 在单元格上显示绘图”。有关提取图像对象的其他信息,请参阅本文中的 将图像对象提取到 Excel 网格 一文部分。

使用 Matplotlib 创建散点图 

此示例介绍如何使用鸢尾花样本数据集创建散点图。 散点图显示数据集中两个数值变量之间的关系。 该示例创建类似于以下屏幕截图的散点图,比较 了sepal_width 值和 sepal_length 值。

在 Excel 中使用 Python 使用 matplotlib 库创建散点图。

Excel 中的 Python 使用 Matplotlib开源库创建可视化效果。 Matplotlib库会自动在 Excel 中使用以下 import 语句为 Python 导入,以便将其引用为 plt。  

import matplotlib.pyplot as plt 

若要使用 Matplotlib 库创建鸢尾花数据集的散点图,请执行以下步骤:

  1. 在 Excel 中的 Python 单元格中,使用 matplotlib 散点函数并输入 Iris 数据集的sepal_length sepal_width 列作为参数。 在此示例中,工作表中的 Table1 包含 Iris 数据集。plt.scatter(xl("Table1[sepal_length]"), xl("Table1[sepal_width]"))

  2. 向散点图添加标签和标题。  # Label the x and y axes of the plot. plt.xlabel('sepal_length') plt.ylabel('sepal_width')   # Add a title to the plot.  plt.title('Sepal length and width analysis')

    注意: 可以将此代码片段作为附加代码行添加到上一步中的 Python 公式之后,在同一 Excel 单元格中,也可以在工作簿的 Excel 单元格中的新 Python 中输入它。 如果选择在新单元格中输入它,请确保遵循行主计算顺序规则,并在第一个单元格之后输入它。

  3. 提交 Python 公式后,Excel 中的 Python 会将散点图可视化效果作为图像对象返回。 选择图像对象单元格中的卡图标以查看可视化效果的预览。  在数据帧中查看散点图的预览。

    注意: 如果遇到任何错误,请参阅 排查 Excel 中的 Python 错误 ,了解详细信息。  

  4. 将可视化对象保留为图像对象,以继续使用它进行 Python 计算。 将图像提取到 Excel 网格以调整其大小并更详细地查看绘图。 若要将图像提取到网格中,请右键单击或 Ctrl+单击包含图像对象的单元格,然后从菜单中选择“ 在单元格上显示绘图”。有关提取图像对象的其他信息,请参阅本文中的 将图像对象提取到 Excel 网格 一文部分。

将图像对象提取到 Excel 网格

如本文中的示例所示,seaborn 和 Matplotlib 等 Python 库可以将数据可视化效果返回到 Excel 单元格。 默认情况下,Excel 中的 Python 将这些可视化效果作为图像对象返回。 

选择图像对象单元格中的卡图标以查看可视化效果的预览。

请参阅 DataFrame 卡中的绘图预览。

可通过两种方法将图像提取到 Excel 网格:在单元格上以绘图形式显示图像或在单元格内显示图像。

在单元格上显示图像

按照以下步骤将图像显示为单元格上的绘图。

  1. 右键单击或 Ctrl+单击包含图像对象的单元格,然后从 (菜单中选择“ 在单元格上显示绘图”,或使用键盘快捷方式 Ctrl+Alt+Shift+C) 。 这会创建一个图像副本,该副本浮动在 Excel 网格上,并且可以轻松调整大小。 原始图像对象保留在原始单元格中。

  2. 选择并拖动绘图图像以在工作表中移动它。 选择并拖动图像的角落和两侧的节点,以调整其大小。 使用“创建引用”图标创建浮动绘图可视化效果。

在单元格中显示图像

按照以下步骤在单元格中显示图像。

  1. 以 Excel 值的形式返回图像对象。 选择图像对象单元格,转到编辑栏中的“Python 输出”菜单,然后选择“ Excel 值”。   使用编辑栏旁边的 Python 输出菜单更改输出类型。 绘图图像现在显示在单元格中。

    提示: 若要在 Python 对象和 Excel 值之间切换 Python 公式结果,请使用键盘快捷方式 Ctrl+Alt+Shift+M。 若要了解键盘快捷方式的详细信息,请参阅 Excel 中的 Python 键盘快捷方式

  2. 绘图图像的大小取决于单元格的大小。 通过增加单元格的大小或 合并单元格来增加图像的大小。

创建自己的绘图和图表 

现在,你已了解如何在 Excel 绘图和图表中使用示例数据集创建 Python,请在 Excel 工作簿中输入自己的数据并创建自定义可视化效果。  

若要导入外部数据以在 Excel 中与 Python 配合使用,请使用 Power Query。 若要了解详细信息,请参阅使用 Power Query 在 Excel 中导入 Python 数据

对非英语语言使用不同的字体 

若要绘制使用非拉丁字母字符(如中文、韩语或泰文)的数据的图表,请使用 excel.FontPath。 默认情况下,Excel 中的 Python 将非拉丁字母字符呈现为空方块 ('□') 。 若要解决此问题, excel.FontPath 允许使用 excel 模块调用其他字体并呈现字符。

可以使用以下字体。 属性追加到 Python 代码中的 excel.FontPath 。 路径引用 由 属性调用的字体文件。

属性

路径

孟加拉语

/usr/share/fonts/Vrinda.ttf

CHINESE_SIMPLIFIED

/usr/share/fonts/SimSun.ttf

CHINESE_TRADITIONAL

/usr/share/fonts/MingLiU.ttf

印地语

/usr/share/fonts/Mangal.ttf

日语

/usr/share/fonts/Meiryo.ttf

朝鲜语

/usr/share/fonts/Batang.ttf

泰语

/usr/share/fonts/THSarabunPSK.ttf

胜过。FontPath 示例

之前

此图表无法呈现正确的绘图标签,因为默认字体不支持提供的字符。

未呈现字符的图表

未正确呈现图表标签的代码示例: 

import matplotlib.pyplot as plt

# Make the plot.

myplot = pd.DataFrame({'欧文': [1,2,3], '比尔': [1,2,3]}).plot(x='欧文')

# Show the plot.

plt.show()

段后

若要修复此示例中的图表标签,请使用 excel.FontPath.CHINESE_SIMPLIFIED 正确呈现提供的中文字符。 

正确呈现字符的图表

正确呈现的图表标签的代码示例: 

import matplotlib.pyplot as plt

from matplotlib.font_manager import FontProperties

# Set the font path.

#   Returns '/usr/share/fonts/simsun.ttf'

font_path = excel.FontPath.CHINESE_SIMPLIFIED

# Point the properties to the font path.

font_properties = FontProperties(fname=font_path)

plt.rcParams['font.family'] = font_properties.get_name()

# Make the plot.

myplot = pd.DataFrame({'欧文': [1,2,3], '比尔': [1,2,3]}).plot(x='欧文')

# Show the plot.

plt.show()

相关文章 

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。