本教學課程可協助您開始在 Power BI Desktop 中使用 Python 資料來建立視覺效果。 您會運用 Python、pandas 和 Matplotlib 程式庫,使用於建立視覺報表的一些可用選項和功能。
必要條件
逐步進行在 Power BI Desktop 中執行 Python 指令碼,以:
在本機電腦上安裝 Python。
在 Power BI Desktop 中啟用 Python 指令碼。
安裝 pandas 和 Matplotlib 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 視覺效果
完成先修條件後,你會在 Power BI Desktop 中看到一個表格,裡面有 Python 腳本的範例資料: Fname、 Age、 Weight、 Gender、 State、 Children 和 Pets。 這個教學使用那個表格來製作可視化。
在 Power BI Desktop 視覺化窗格中選擇 Python 視覺圖示。
在隨即顯示的 [啟用指令碼視覺效果] 對話方塊中,選取 [啟用]。
預留位置 Python 視覺效果影像會出現在報表畫布上,而 Python 指令碼編輯器會出現在中央窗格底部。
將年齡、子女、名字、性別、寵物、州和體重欄位拖曳至 [值] 區段顯示 [於此處新增資料欄位] 的位置。
依據您選取的項目,[Python 指令碼編輯器] 會產生下列繫結程式碼。
- 編輯器已建立 [資料集] 資料框架,其中有您所新增的欄位。
- 預設彙總為 [不摘要]。
- 類似於資料表視覺效果,欄位會進行分組,且重複列只會出現一次。
利用你選擇欄位自動產生的資料框,你可以編寫一個 Python 腳本,將圖形繪製到 Python 的預設輸出裝置。 當指令碼完成時,請從 Python 指令碼編輯器標題列選取 [執行] 圖示,以執行指令碼並產生視覺效果。
提示
你的 Python 腳本只能使用你在 Values 區塊新增的欄位。 你可以在寫 Python 腳本時新增或移除欄位。 Power BI Desktop 會自動偵測欄位變更。 從 [值] 區段選取或移除欄位時,Python 指令碼編輯器中的支援程式碼會隨之自動產生或移除。
在某些情況下,您可能不想要自動分組,或您希望顯示所有的資料列 (包括重複項目在內)。 在這種情況下,可以在資料集中新增一個索引欄位,讓所有列都獨一無二,並防止分組。
您可以使用名稱來存取資料集中的資料行。 例如,您可以在 Python 指令碼中編寫
dataset["Age"],以存取 [Age] \(年齡\) 欄位。當您從 Python 指令碼編輯器標題列選取 [執行] 時,或每當因為資料重新整理、篩選或強調顯示而發生資料變更時,Power BI Desktop 會重繪視覺效果。
執行 Python 指令碼並產生錯誤時,Python 視覺效果不會繪製,且畫布上會顯示錯誤訊息。 如需錯誤詳細資料,請選取訊息中的 [查看詳細資料]。
若要取得更大的視覺效果檢視,您可以將 [Python 指令碼編輯器] 最小化。
建立散佈圖
建立散佈圖,來查看年齡和體重之間是否有關聯性。
在 Python 指令碼編輯器中,於 [在此貼上或鍵入您的指令碼] 底下,輸入此程式碼:
import matplotlib.pyplot as plt dataset.plot(kind='scatter', x='Age', y='Weight', color='red') plt.show()您的 [Python 指令碼編輯器] 窗格現在看起來應該像下圖:
程式碼會匯入 Matplotlib 程式庫,其會繪製並建立視覺效果。
選擇 Run 以在 Python 視覺化中產生以下散點圖。
搭配多個資料行建立折線圖
為每個人建立折線圖,來顯示他們的子女及寵物的數目。
於 [在此貼上或鍵入您的指令碼] 底下,移除或註解化上述程式碼,然後輸入下列 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()選擇 「運行 」以產生以下多欄線圖:
建立橫條圖
為每個人的年齡建立橫條圖。
於 [在此貼上或鍵入您的指令碼] 底下,移除或註解化上述程式碼,然後輸入下列 Python 程式碼:
import matplotlib.pyplot as plt dataset.plot(kind='bar',x='Fname',y='Age') plt.show()選擇 「運行 」以產生以下條狀圖:
限制
Power BI Desktop 中的 Python 視覺效果有下列限制:
Python 視覺效果用於繪製的資料限制為 150,000 個資料列。 如果你選擇超過 150,000 列,則只使用最頂端的 150,000 列,且圖片上會顯示訊息。 輸入資料也有 250 MB 的限制。
如果 Python 視覺化的輸入資料集中,包含超過 32,766 個字元的字串值,該值會被截斷。
所有 Python 視覺效果都會以 72 DPI 解析度顯示。
如果 Python 視覺效果計算超過五分鐘,執行時間會逾時並導致錯誤。
如同其他 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) | 支援 | 不支援 | Fabric/Premium 工作區支援* |
| 非受控租用戶 (未驗證網域) | 支援 | 不支援 | 不支援 |
| 具有免費授權的受控租用戶 | 支援 | 不支援 | Fabric/Premium 工作區支援* |
| 具有 Pro 或 PPU 授權的受控租用戶 | 支援 | 支援 | 支援* |
服務中的 Python 視覺化僅支援於 Fabric 區域。 此支援的作用是:在工作區擁有(1)Fabric 授權,或(2)Pro 或 PPU 授權,或(3)高級授權且 PBI 主租戶位於具備 Fabric Spark 工作負載可用區域的情況下,發佈至工作區的報告會顯示 Python 圖表視覺化功能。 所有用戶在 Desktop 中皆支援 Python 視覺效果。
如需 Power BI Pro 授權及其與免費版授權有何不同的詳細資訊,請參閱購買和指派 Power BI Pro 使用者授權。
相關內容
這個教學只是略觸及使用 Python、pandas 和 Matplotlib 函式庫來製作視覺報告的選項與功能。 如需詳細資訊,請參閱以下資源:
- Matplotlib 網站上的文件。
- Matplotlib 教學課程:使用 Matplotlib 搭配 Python 的基本指南
- Matplotlib 教學課程 – Python Matplotlib 程式庫及範例 \(英文\)
- Pandas API 參照
- Power BI 服務中的 Python 視覺效果
- 在 Power BI 中使用 Python 視覺效果
- 完整的 Python 指令碼教學課程
如需在 Power BI 中使用 Python 的詳細資訊,請參閱: