關於可用性資訊,請參閱 Excel 中的 Python 可用性。 如果您在使用 Excel 中遇到任何使用 Python 的問題,請選擇「 Excel 中的說明>回饋 」來回報。
第一次使用 Excel 中的 Python 嗎? 先從 Excel 中的 Python 入門 開始,然後從 Excel 中的 Python 開始。
使用開放原始碼 Python 文件庫建立繪圖和圖表
Excel 中的 Python 附帶 Anaconda 提供的核心 Python 函式庫。 本文說明如何使用 Python 函式庫,如 seaborn 和 Matplotlib,來建立圖表與圖表。 若要深入了解 Excel 中 Python 提供的開放原始碼文件庫,請參閱 開放原始碼文件庫 和 Excel 中的 Python。
本文中的範例是使用鳶尾花朵資料集。 下載這本範例工作手冊,跟著文章一同閱讀: python-in-excel-iris-dataset.xlsx。
使用 Seaborn 建立配對繪圖
此範例示範如何建立鳶尾花朵資料集的配對繪圖視覺效果。 配對繪圖是一組繪圖和圖表矩陣,可比較資料集中每個變數之間的關係。 在此情況下,鳶尾花朵資料集包含四欄的數值資料:sepal_length、sepal_width、petal_length 和 petal_width。
Python 在 Excel 裡用 seaborn 函式庫來建立視覺化。 Seaborn 函式庫會自動匯入 Python 的 Excel 裡,並透過以下匯入語句來引用,並使用別名 SNS 來參考。
import seaborn as sns
若要使用 Seaborn 文件庫建立鳶尾花朵資料集的配對繪圖,請執行下列步驟:
在 Excel 中的 Python 儲存格中輸入下列程式碼片段。 程式碼片段會將配對繪圖儲存為稱為 pairplot 的變數。 它會建立與 seaborn 函式庫別名 sns 以及 seaborn 函數 配對圖的對圖。
pairplot = sns.pairplot(xl("Table1[#All]", headers=True))作為 pairplot 函數的參數,程式碼片段使用自訂的Python函式 xl () ,並參考工作表中的第一個表格 Table1。 它包含整個資料表內容 (為 [#All]),以及資料表包含標題列 (為 headers=True) 的記事。 在此範例中,工作表中的 Table1 包含鳶尾花朵資料集。
注意
如果您遇到任何錯誤,請參閱對 Excel 中的 Python 錯誤進行疑難排解,以取得詳細資訊。
確認您的 Python 公式之後,Excel 中的 Python 會傳回影像物件中的配對繪製視覺效果。 選取影像物件儲存格中的卡片圖示,以查看視覺效果的預覽。
將視覺效果保留為影像物件,以繼續用於 Python 計算。 將影像擷取到 Excel 方格以調整其大小,並更詳細地檢視每一個繪圖。 若要將影像擷取到方格,請以滑鼠右鍵按一下或 Ctrl+單擊包含影像物件的儲存格,然後從功能表中選取 [在儲存格上方顯示繪圖]。
若需要擷取影像物件的更多資訊,請參閱本文擷取影像物件到 Excel 方格中的文章部分。
使用 Matplotlib 建立散佈圖
本範例說明如何使用鳶尾花朵範例資料集建立散佈圖。 散佈圖顯示資料集中兩個數值變數之間的關係。 範例中會產生一個散點圖,看起來像以下截圖,比較 sepal_width 與 sepal_length 值。
Python 在 Excel 中使用 Matplotlib 開源函式庫來建立視覺化。 Matplotlib 函式庫會自動匯入 Python 的 Excel 中,並透過以下匯入說明式,讓你以 pt 來參考。
import matplotlib.pyplot as plt
若要使用 Matplotlib 文件庫建立鳶尾花朵資料集的散佈圖,請採取下列步驟:
在 Python 的 Excel 儲存格中,使用 Matplotlib 散佈 函式,並將 Iris 資料集的 sepal_length 欄和 sepal_width 欄作為參數輸入。 在此範例中,工作表中的 Table1 包含鳶尾花朵資料集。
plt.scatter(xl("Table1[sepal_length]"), xl("Table1[sepal_width]"))在散佈圖中新增標籤和標題。
# 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 儲存格中輸入它。 如果您選擇在新的儲存格中輸入,請務必遵循列優先順序計算順序規則,在第一個儲存格後方輸入。
在認可您的 Python 公式之後,Excel 中的 Python 會將散佈圖視覺效果作為影像物件傳回。 選取影像物件儲存格中的卡片圖示,以查看視覺效果的預覽。
注意
如果您遇到任何錯誤,請參閱對 Excel 中的 Python 錯誤進行疑難排解,以取得詳細資訊。
將視覺效果保留為影像物件,以繼續用於 Python 計算。 將影像擷取到 Excel 方格以調整其大小,並更詳細地檢視繪圖。 若要將影像擷取到方格,請以滑鼠右鍵按一下或 Ctrl+單擊包含影像物件的儲存格,然後從功能表中選取 [在儲存格上方顯示繪圖]。
若需要擷取影像物件的更多資訊,請參閱本文擷取影像物件到 Excel 方格中的文章部分。
將影像物件擷取到 Excel 方格
如本文範例所示,Seaborn 和 Matplotlib 等 Python 文件庫可以將資料視覺效果傳回 Excel 儲存格。 根據預設,Excel 中的 Python 會將這些視覺效果作為影像物件傳回。
選取影像物件儲存格中的卡片圖示,以查看視覺效果的預覽。
將影像擷取至 Excel 方格的方法有兩種:將影像顯示為在儲存格上方繪製,或在儲存格內顯示影像。
在儲存格上方顯示影像
請依照下列步驟,將影像顯示為在儲存格上方繪製。
以滑鼠右鍵按一下或 Ctrl+單擊包含圖像物件的儲存格,然後從功能表選取 [在儲存格上方顯示繪圖] (或使用快速鍵 Ctrl+Alt+Shift+C)。 這會建立一份影像複本,該影像會在 Excel 方格上浮動,而且可以輕鬆地重設大小。 原始影像物件會保留在原始儲存格中。
選取並拖曳繪圖影像以在工作表中移動它。 選取並拖曳影像角落和側邊的節點,以調整其大小。
在儲存格中顯示影像
請依照下列步驟在儲存格中顯示影像。
將影像物件作為 Excel 值傳回。 選取影像物件儲存格,移至資料編輯列中的 [Python 輸出] 功能表,然後選取 [Excel 值]。
繪圖影像現在會顯示在儲存格內。
秘訣
若要在 Python 物件和 Excel 值之間切換 Python 公式結果,請使用快速鍵 Ctrl+Alt+Shift+M。 想了解更多鍵盤快捷鍵,請參考 Excel 中的 Python 鍵盤快捷鍵。
繪製圖像的大小取決於儲存格的大小。 透過增加格子大小或 合併格子來增加影像大小。
針對非英文的語言使用不同的字型
若要繪製使用非拉丁字母(如中文、韓文或泰文)的資料,請使用 excel.FontPath。 根據預設,Excel 中的 Python 會將非拉丁音義符號轉譯為空白方格 (□)。 為了解決這個問題, excel.FontPath 允許你用 excel 模組呼叫不同的字型並渲染字元。
下列字型可供使用。 屬性會附加 excel.FontPath 在你的 Python 程式碼中。 路徑是指以屬性呼叫的字型檔案。
| 屬性 | 路徑 |
|---|---|
| 孟加拉文 | /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 |
用Excel。FontPath 顯示簡體中文情節標籤
以下截圖展示了一張圖表,劇情標籤以簡體中文標示,使用。excel.FontPath 截圖後的程式碼範例展示了如何顯示 excel.FontPath.CHINESE_SIMPLIFIED 簡體中文庫中的字元。
使用 Excel.FontPath 的範例程式碼
此程式碼範例展示了如何生成 excel.FontPath.CHINESE_SIMPLIFIED 劇情及前述截圖中顯示的劇情標籤中的簡體中文漢字。
-
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
# Set the font path. This 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()