如何在 Microsoft Fabric 中使用 Pandas 讀取和寫入資料

Microsoft Fabric 筆記本支援使用 Pandas 與 Lakehouse 資料順暢互動,這是用於資料探索和處理的熱門 Python 庫。 在筆記本中,您可以快速讀取數據,並以各種檔案格式將數據寫回您的 Lakehouse 資源。 本指南提供程式碼範例,以協助您開始使用自己的筆記本。

必要條件

  • 完成 為資料科學教學準備您的系統 中的步驟,以建立新的筆記本,並將 Lakehouse 附加到該筆記本。 在本文中,請遵循步驟來建立新的筆記本,而不是匯入現有的筆記本。

使用這個工作流程來選擇合適的圖案:

  • 若要處理 Lakehouse 中的單一檔案,請使用 Pandas 並透過 Files 下的路徑讀取或寫入。
  • 對於 Lakehouse 中的表格式資料,請使用 Spark 和 Delta 資料表,只有在結果可放入筆記本環境的記憶體時,才轉換為 Pandas。
  • 如果資料很大,先把它放在 Spark 裡進行篩選、聚合和轉換,再轉換成 Pandas DataFrame。

將 Lakehouse 資料載入筆記本

附註

您需要 Lakehouse 中的一些數據,才能遵循本節中的步驟。 如果您沒有任何數據,請遵循 下載數據集並上傳至 lakehouse 中的步驟,將 churn.csv 檔案新增至 Lakehouse。

一旦你將 Lakehouse 連接到 Microsoft Fabric 筆記本,就能在不離開頁面的情況下探索儲存的資料,並複製你所需的筆記本程式碼檔案路徑。 在 Lakehouse 檔案總管中,你可以使用產生的筆記本片段將檔案載入 Spark 或 Pandas DataFrame,或複製檔案的完整 ABFS 路徑。 對於附加至筆記本的預設 Lakehouse,典型的 Files 路徑如下所示:/lakehouse/default/Files/...。 其他湖屋則使用湖屋探險器的ABFS路徑。

顯示將資料載入 Pandas DataFrame 之選項的螢幕擷取畫面。

在 Lakehouse 檔案總管中選擇檔案可以產生程式碼,將該檔案載入筆記本中的 DataFrame。

顯示新增至筆記本之程式碼儲存格的螢幕擷取畫面。

將 Spark DataFrame 轉換為 Pandas DataFrame

Important

toPandas() 將完整的 Spark DataFrame 載入筆記型電腦驅動程式記憶體。 只用在小到中型的結果集上。 如果你的資料集很大,先在 Spark 裡篩選、彙整或取樣,再轉換成 Pandas。

如需參考,此命令會展示如何將 Spark DataFrame 轉換成 Pandas DataFrame:

# Replace "spark_df" with the name of your own Spark DataFrame
pandas_df = spark_df.toPandas()

讀取和寫入各種檔案格式

附註

修改特定套件的版本可能會中斷相依的其他套件。 例如,降級 azure-storage-blob 可能會導致 Pandas 和其他各種依賴 Pandas 的程式庫發生問題,包括 mssparkutils、fsspec_wrapper 和 notebookutils。 您可以在這裏檢視預安裝套件的清單及其每個執行時間的版本。

這些程式代碼範例示範 Pandas 作業,以讀取和寫入各種檔案格式。 這些範例並非要依照教學課程的順序執行,而是視需要複製並貼到您自己的筆記本中。

附註

你必須將這些範例中的檔案路徑替換成 Lakehouse 檔案的完整路徑。 對於附在筆記本上的預設 Lakehouse,可以使用像 /lakehouse/default/Files/...這樣的路徑。 其他湖屋則使用湖屋探險器的ABFS路徑。

從 CSV 檔案讀取資料

import pandas as pd

# Read a CSV file from your Lakehouse into a Pandas DataFrame
# For the default Lakehouse attached to the notebook, use the following path pattern:
df = pd.read_csv("/lakehouse/default/Files/FILENAME.csv")

# Verify that the file loaded successfully before continuing
print(df.head())
print(df.shape)
display(df)

將資料寫入為 CSV 檔案

import pandas as pd

# Write a Pandas DataFrame into a CSV file in your Lakehouse
# Replace FILENAME with your own value
df.to_csv("/lakehouse/default/Files/FILENAME.csv", index=False)

從 Parquet 檔案讀取資料

import pandas as pd

# Read a Parquet file from your Lakehouse into a Pandas DataFrame
df = pd.read_parquet("/lakehouse/default/Files/FILENAME.parquet")
display(df)

將資料寫入 Parquet 檔案

import pandas as pd

# Write a Pandas DataFrame into a Parquet file in your Lakehouse
df.to_parquet("/lakehouse/default/Files/FILENAME.parquet")

從 Excel 檔案讀取資料

import pandas as pd

# Read an Excel file from your Lakehouse into a Pandas DataFrame
# If the file is in a subfolder, add the appropriate folder after Files/
df = pd.read_excel("/lakehouse/default/Files/FILENAME.xlsx")
display(df)

將資料寫入為 Excel 檔案

import pandas as pd

# Write a Pandas DataFrame into an Excel file in your Lakehouse
df.to_excel("/lakehouse/default/Files/FILENAME.xlsx", index=False)

從 JSON 檔案讀取資料

import pandas as pd

# Read a JSON file from your Lakehouse into a Pandas DataFrame
df = pd.read_json("/lakehouse/default/Files/FILENAME.json")
display(df)

將資料寫入為 JSON 檔案

import pandas as pd

# Write a Pandas DataFrame into a JSON file in your Lakehouse
df.to_json("/lakehouse/default/Files/FILENAME.json")

使用 Delta 表格

Delta 資料表是 Microsoft Fabric 中的預設資料表格式,並儲存在您的 Lakehouse 的 資料表 區段中。 檔案和資料表在 Fabric 中是不同的儲存位置,且使用不同的存取模式。 要在 Pandas 中使用 Delta 資料表,請先將該資料表讀入 Spark DataFrame,然後僅在篩選後的結果能放入驅動程式記憶體時,才將其轉換為 pandas DataFrame。

建立測試 Delta 資料表

若要依照本節中的步驟操作,您需要在 Lakehouse 中有一個 Delta 資料表。 請遵循 下載資料集並上傳至 Lakehouse 中的步驟,將 churn.csv 檔案新增至 Lakehouse,然後在筆記本中執行下列程式碼,從 churn.csv 檔案建立測試資料表:

import pandas as pd
# Create a test Delta table from the churn.csv file

df = pd.read_csv("/lakehouse/default/Files/churn/raw/churn.csv")
spark_df = spark.createDataFrame(df)
spark_df.write.format("delta").mode("overwrite").saveAsTable("churn_table")

此步驟會建立一個名為 churn_table 的 Delta 表格,可用於測試以下範例。

從 Delta 資料表讀取資料

# Read a Delta table from your Lakehouse into a pandas DataFrame
# This example uses the churn_table created above
spark_df = spark.read.table("churn_table")
pandas_df = spark_df.toPandas()
display(pandas_df)

您也可以使用 Spark SQL 語法讀取 Delta 資料表:

# Alternative method using Spark SQL
spark_df = spark.sql("SELECT * FROM churn_table")
pandas_df = spark_df.toPandas()
display(pandas_df)

將 pandas DataFrame 寫入 Delta 資料表

# Convert pandas DataFrame to Spark DataFrame, then save as Delta table
# Replace TABLE_NAME with your desired table name
spark_df = spark.createDataFrame(pandas_df)
spark_df.write.format("delta").mode("overwrite").saveAsTable("TABLE_NAME")

您也可以儲存至「表格」區段中的特定路徑:

# Save to a specific path in the Tables section
spark_df = spark.createDataFrame(pandas_df)
spark_df.write.format("delta").mode("overwrite").save("Tables/TABLE_NAME")

Delta 資料表的寫入模式

寫入 Delta 資料表時,您可以指定不同的模式:

# Overwrite the entire table
spark_df.write.format("delta").mode("overwrite").saveAsTable("TABLE_NAME")

# Append new data to existing table
spark_df.write.format("delta").mode("append").saveAsTable("TABLE_NAME")

附註

在 Lakehouse 的 Tables 區段中建立的 Delta 資料表可直接探索,無須任何額外的註冊或設定步驟,並可使用 Spark SQL 查詢。 它們也會出現在 Lakehouse 瀏覽器介面中(您可能需要重新整理 Lakehouse 瀏覽器,才能查看最新變更)。