跳至主要内容

在 Power BI 中运行 Python 脚本教程

了解在 Power BI 中使用 Python 优化数据分析、可视化和建模的多种方式。
· 9分钟 阅读

使用 AI 探索

Python 是最受欢迎、增长最快的数据科学与分析编程语言之一。Python 能够完成与数据转换、可视化、机器学习、人工智能等相关的高度复杂任务。

Power BI 可以直接与 Python 集成,将 Power BI 的整体能力提升到新的水平。在本教程中,我们将重点介绍在 Power BI 中设置并使用 Python 脚本来导入数据并丰富现有数据集。

为何在 Power BI 中使用 Python?

将 Python 与 Power BI 结合使用,会为数据处理带来全新的可能性。Python 让 Power BI 成为一个几乎无所不能的平台。

以下是一些在 Power BI 中使用 Python 可执行的任务示例:

  • 数据清洗——您可以编写 Python 脚本,自动化常见的重复性清洗任务,例如删除缺失值或修正日期格式。
  • 数据转换——对于在导入前需要进行更大规模转换的数据集,使用 Python 脚本会更高效;这些转换在 Power Query 编辑器中可能较慢或繁琐。
  • 机器学习——通过预测分析(如回归或自然语言处理)丰富您的数据,或执行诸如聚类分析等无监督学习任务。
  • 缺失数据处理——Python 为处理缺失数据提供了更多选项,例如借助机器学习模型。
  • 高级可视化——使用 Python 时,您可以在报表中添加任意类型的可视化。无需在 Power BI 中下载自定义视觉对象,也能创建高度复杂或高度定制的图表。
  • 连接能力——即使 Power BI 尚未内置支持某数据源,Python 也能帮助您几乎连接到任何数据源。

在 Power BI 中使用 Python 的限制有哪些?

在编写脚本时,需注意在 Power BI 中使用 Python 存在以下一些限制:

  • 通过 Python 添加的数据源其隐私级别必须设置为公开。
  • 使用 Python 导入到 Power BI 的数据仅限 Pandas DataFrame。
  • 运行时间超过 30 分钟的脚本会超时,运行时间超过 5 分钟的 Python 视觉对象也会超时。
  • Power BI Service 支持的 Python 库数量有限(我们将在下一节详细说明)。
  • 使用 Python 的报表只能通过个人网关在 Power BI Service 中刷新(不支持企业或标准网关)。
  • Python 视觉对象不支持交叉筛选。这意味着在 Python 视觉对象中选择某个元素,不会使其他视觉对象根据该选择进行筛选,从而会降低 Power BI 报表的部分交互性。

如前所述,Power BI Service 仅支持有限数量的 Python 库。在使用 Power BI Desktop 构建报表时不受这些限制,因此如果您计划将报表发布到 Power BI Service,请留意自己使用的库。

另请注意,Power BI Service 目前支持 Python 3.7.7 运行时。如果您在较早版本的 Python 中编写脚本,代码可能无法正确运行。

Power BI Service 支持以下库:

  • Matplotlib
  • NumPy
  • Pandas
  • Scikit-learn
  • Scipy
  • Seaborn
  • Statsmodels
  • XGBoost

值得注意的是,为了让 Power BI 与 Python 的集成正常工作,至少需要安装两个 Python 库——Pandas 和 Matplotlib。

如何在 Power BI 中设置 Python

在 Power BI 中编写任何脚本之前,您需要从Python 官网安装最新版本的 Python。

Power BI 文档建议避免使用 Anaconda 等环境管理器,因为它可能会导致脚本运行出现问题。如果您在 Anaconda 中使用自定义环境,可以尝试的变通方法是先在命令行中激活该环境,然后也从命令行打开 Power BI Desktop。

不过,如果您对这些编程相关内容不太熟悉,按照 Power BI 的建议,直接从官网下载安装 Python 而不使用自定义环境会更简便。

安装 Python 后,您需要在 Power BI Desktop 中指定正确的 Python 文件路径。在功能区中依次选择“File”“Options and settings”,然后选择“Options”。在全局选项列表中找到“Python scripting”。您需要在这里定位包含 Python 发行版的目录。

在下拉列表中,您应能看到计算机上安装的所有 Python 发行版。如果需要手动输入文件路径,请注意此处仅支持绝对路径,不能输入相对路径(例如基于 Power BI 报表位置的相对路径)。

Python Scripting in Power BI

在 Power BI 中使用 Python 脚本有几种方式:

  • 作为数据源导入新数据。
  • 在 Power Query 编辑器中丰富现有数据源。
  • 在 Power BI 报表画布中可视化数据。

本教程的其余部分将介绍如何将 Python 用作数据源,以及如何用于丰富现有数据源。

在 Power BI 中将 Python 用作数据源

在功能区的“Home”选项卡中,选择“Get data”以打开完整的数据连接列表。选择“Other”类别,并在列表中找到“Python script”。这将允许您编写 Python 脚本来导入数据集。当需要连接到 Power BI 连接列表中不支持的数据源,或在导入前需要进行大量数据转换(例如来自 API)时,我发现这种方式尤其有用。

Using Python as a Data Source in Power BI

将弹出一个对话框,您可以在其中输入 Python 代码。在本示例中,我们将使用 Scikit-Learn 库来加载 Iris 数据集,该数据集也将在下一节中使用。请记住,Power BI 只允许导入 Pandas DataFrame,因此我们必须先使用“pd.DataFrame”转换数据集。

Python Script in Power BI

在下一个窗口中,选择名为“df”的数据表,它包含了数据。现在,您就可以像对待 Power BI 中的其他任何数据源一样,将此数据集加载到数据模型中。

Navigator in Power BI Screenshot

在 Power BI 中使用 Python 进行 K-Means 聚类

K-Means 聚类是一种无监督机器学习技术,可用于发现彼此相似的数据点群组——即聚类。该技术对企业在市场营销和客户服务领域更好地理解客户尤为实用。

Power BI 本身具备对数据执行聚类分析的能力,无需借助 Python。不过,它有一定限制,例如会自行确定数据要划分的聚类数量,并且不允许您更改。这类情形使 Python 成为理想方案,因为您可以根据自身需求灵活编写脚本。

在 Power Query 编辑器中,选择功能区中的 Transform 选项卡,然后选择“Run Python Script”。这会弹出与我们导入数据集时几乎相同的对话框,只是这里为当前数据集提供了一个名为“dataset”的占位符。

Run Python Script Power BI Screenshot

选择“OK”后会导入一张折叠的表。您现在需要展开 Value 列,选择要在查询中包含的列。选择所有列,包括我们刚刚通过上述脚本创建的新“Cluster”列,并确保取消选中“Use original column name as prefix”复选框。

Power BI Use Original Column Name as Prefix

最终,我们得到的数据集包含所有原始列,外加一个额外的列,用于显示每一行数据所属的聚类。在此示例中,我们将数据划分为 4 个聚类,因此应出现从 0 到 3 的聚类标签。

Splitting the Data into 4 Clusters Power BI

结语

这只是 Python 与 Power BI 集成能力的冰山一角。如果本教程激发了您充分利用 Power BI 的兴趣,不妨查看 DataCamp 的Power BI 基础技能路径或Power BI 数据分析师职业路径。

主题