使用 Python 來建立 Power BI 視覺效果
本教學課程可協助您開始在 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 視覺效果
匯入 Python 指令碼之後,在 Power BI Desktop [視覺效果] 窗格中選取 [Python 視覺效果] 圖示。
在隨即顯示的 [啟用指令碼視覺效果] 對話方塊中,選取 [啟用]。
預留位置 Python 視覺效果影像會出現在報表畫布上,而 Python 指令碼編輯器會出現在中央窗格底部。
將年齡、子女、名字、性別、寵物、州和體重欄位拖曳至 [值] 區段顯示 [於此處新增資料欄位] 的位置。
依據您選取的項目,[Python 指令碼編輯器] 會產生下列繫結程式碼。
- 編輯器已建立 [資料集] 資料框架,其中有您所新增的欄位。
- 預設彙總為 [不摘要]。
- 類似於資料表視覺效果,欄位會進行分組,且重複列只會出現一次。
由於資料框架是由您選取的欄位自動產生,因此您可以撰寫 Python 指令碼,進而繪製到 Python 預設裝置。 當指令碼完成時,請從 Python 指令碼編輯器標題列選取 [執行] 圖示,以執行指令碼並產生視覺效果。
提示
您的 Python 指令碼只能使用新增至 [值] 區段的欄位。 您可以在 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 程式庫,其會繪製並建立視覺效果。
選取 [執行] 按鈕,以在 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) | 支援 | 不支援 | 僅在 Premium/Azure 容量中支援 |
非受控租用戶 (未驗證網域) | 支援 | 不支援 | 不支援 |
具有免費授權的受控租用戶 | 支援 | 不支援 | 僅在 Premium 容量中支援 |
具有 Pro 或 PPU 授權的受控租用戶 | 支援 | 支援 | 支援 |
如需 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 的詳細資訊,請參閱: