使用 Python 创建 Power BI 视觉对象

本教程可帮助用户开始在 Power BI Desktop 中使用 Python 数据创建视觉对象。 可以选用使用 Python、pandas 和 Matplotlib 库创建视觉对象报表的多种可用选项和功能。

先决条件

完成在 Power BI Desktop 中运行 Python 脚本以执行以下操作:

  • 在本地计算机上安装 Python

  • 在 Power BI Desktop 中启用 Python 脚本编写。

  • 安装 pandasMatplotlib Python 库。

  • 将以下 Python 脚本导入 Power BI Desktop:

    import pandas as pd 
    df = pd.DataFrame({ 
        'Fname':['Harry','Sally','Paul','Abe','June','Mike','Tom'], 
        'Age':[21,34,42,18,24,80,22], 
        'Weight': [180, 130, 200, 140, 176, 142, 210], 
        'Gender':['M','F','M','M','F','M','M'], 
        'State':['Washington','Oregon','California','Washington','Nevada','Texas','Nevada'],
        'Children':[4,1,2,3,0,2,0],
        'Pets':[3,2,2,5,0,1,5] 
    }) 
    print (df) 
    

在 Power BI Desktop 中创建 Python 视觉对象

  1. 导入 Python 脚本后,在 Power BI Desktop“可视化效果”窗格中选择“Python 视觉对象”图标。

    Screenshot that shows the Python option in Visualizations.

  2. 在出现的“启用脚本视觉对象”对话框中,选择“启用”

    占位符 Python 视觉对象图像显示在报表画布上,“Python 脚本编辑器”显示在中央窗格的底部。

    Screenshot that shows the Python script editor.

  3. 将“Age”、“Children”、“Fname”、“Gender”、“Pets”、“State”和“Weight”字段拖到显示“在此处添加数据字段”的“值”部分。

    Screenshot that shows Drag to Add data fields here.

    基于这些选择,Python 脚本编辑器将生成以下绑定代码。

    • 编辑器创建了一个包含添加字段的“数据集”数据帧。
    • 默认聚合是“不汇总”。
    • 与表格视觉对象类似,字段已分组,重复行仅出现一次。
  4. 借助所选字段自动生成的数据帧,就可以编写 Python 脚本,它将会绘制到 Python 默认设备。 脚本完成后,从“Python 脚本编辑器”标题栏中选择“运行”图标以运行脚本并生成视觉对象。

    Screenshot that shows the Python script editor with initial comments.

提示

  • Python 脚本只能使用添加到“值”部分的字段。 可以在处理 Python 脚本时添加或删除字段。 Power BI Desktop 会自动检测字段更改。 从“值”部分选择或删除字段时,系统会自动生成或删除 Python 脚本编辑器中的支持代码。

  • 在某些情况下,你可能不希望进行自动分组,或者可能希望所有行都出现,包括重复项。 在这些情况下,你可以向将导致所有行被视为唯一且阻止分组的数据集添加索引字段。

  • 可以使用列的名称访问数据集中的列。 例如,可以在 Python 脚本中编写 dataset["Age"] 的代码来访问年龄字段。

  • 当你从“Python 脚本编辑器”标题栏中选择“运行”时,或者由于数据刷新、筛选或突出显示而发生数据更改时,Power BI Desktop 会重新绘制视觉对象。

  • 如果运行 Python 脚本时导致错误,则不会绘制 Python 视觉对象,并且画布上会显示一条错误消息。 有关错误详细信息,请从消息中选择“查看详情”。

  • 若要获取可视化效果的较大视图,你可以尽量减小 Python 脚本编辑器

创建散点图

创建一个散点图,看看年龄与体重之间是否具有相关性。

  1. 在“Python 脚本编辑器”的“粘贴或在此处键入脚本代码”下,输入此代码:

    import matplotlib.pyplot as plt 
    dataset.plot(kind='scatter', x='Age', y='Weight', color='red')
    plt.show() 
    

    Python 脚本编辑器窗格现在应如下图所示:

    Screenshot that shows the Python script editor with commands.

    该代码导入 Matplotlib 库,该库绘制并创建视觉对象。

  2. 选择“运行”脚本按钮以在 Python 视觉对象中生成以下散点图。

    Screenshot that shows the scatter plot visualization generated from the Python script.

创建包含多个列的线条图

为每个用户创建一个显示其子女数和宠物数的条形图。

  1. 在“在此处粘贴或键入脚本代码”下,删除或注释掉之前的代码,然后输入以下 Python 代码:

    import matplotlib.pyplot as plt 
    ax = plt.gca() 
    dataset.plot(kind='line',x='Fname',y='Children',ax=ax) 
    dataset.plot(kind='line',x='Fname',y='Pets', color='red', ax=ax) 
    plt.show() 
    
  2. 选择“运行”按钮生成以下多列条形图:

    Screenshot that shows a line plot with multiple columns from the Python script.

创建条形图

创建一个包含每个人年龄的条形图。

  1. 在“在此处粘贴或键入脚本代码”下,删除或注释掉之前的代码,然后输入以下 Python 代码:

    import matplotlib.pyplot as plt 
    dataset.plot(kind='bar',x='Fname',y='Age') 
    plt.show() 
    
  2. 选择“运行”按钮生成以下条形图:

    Screenshot that shows a bar plot from the Python script.

限制

Power BI Desktop 中的 Python 视觉对象有以下限制:

  • Python 视觉对象用于绘制的数据限制为 150,000 行。 如果选择了 150,000 行以上,则只会使用前 150,000 行,且在图像上显示一条消息。 此外,输入数据的限制为 250 MB。

  • 如果 Python 视觉对象的输入数据集的列包含长度超过 32,766 个字符的字符串值,则该值将被截断。

  • 所有 Python 视觉对象均以 72 DPI 分辨率显示。

  • 如果 Python 视觉对象计算时间超过 5 分钟,则执行将超时并生成一个错误。

  • 如同其他 Power BI Desktop 视觉对象,如果选择的不同表中数据字段间没有定义关系,则会发生错误。

  • Python 视觉对象在数据更新、筛选和突出显示时进行刷新。 图像本身不是交互式的。

  • Python 视觉对象响应突出显示其他视觉对象中的元素,但你无法选择 Python 视觉对象中的元素以进行其他元素的交叉筛选。

  • 只有 Python 默认显示设备的绘图会正确地显示在画布上。 避免显式使用不同的 Python 显示设备。

  • Python 视觉对象不支持重命名输入列。 在脚本执行期间,按列的原始名称对其进行引用。

安全性

Python 视觉对象使用 Python 脚本,其中可能包含具有安全风险或隐私风险的代码。 首次尝试查看 Python 视觉对象或与之交互时,你会收到安全警告。 仅当你信任作者和来源,或者在查看并了解 Python 脚本之后,才启用 Python 视觉对象。

许可

Python 视觉对象需要 Power BI Pro 或者 Premium Per User (PPU) 许可证才能在报表中呈现并进行刷新、筛选和交叉筛选。 免费 Power BI 的用户只能使用在 Premium 工作区中与其共享的磁贴。

下表介绍了基于授权的 Python 视觉对象功能。

在 Power BI Desktop 中创建 Python 视觉对象 使用 Python 视觉对象创建 Power BI 服务报表 查看报表中的 Python 视觉对象
来宾 (Power BI Embedded) 支持 不支持 仅在高级容量/Azure 容量中受支持
非托管租户(域未验证) 支持 不支持 不支持
具有免费许可证的托管租户 支持 不支持 仅高级容量中受支持
具有 Pro 或者 PPU 许可证的托管租户 支持 受支持 支持

有关 Power BI Pro 许可证及其与免费许可证的区别的详细信息,请参阅购买和分配 Power BI Pro 用户许可证

本教程仅粗略介绍了使用 Python、pandas 和 Matplotlib 库创建视觉对象报表的选项和功能。 有关详细信息,请参阅以下资源:

有关 Power BI 中 Python 的详细信息,请参阅: