如何在 Microsoft Fabric 中使用 Pandas 读取和写入数据

Microsoft Fabric 笔记本支持使用 Pandas 与 Lakehouse 数据无缝交互,Pandas 是最常用的用于数据浏览和处理的 Python 库。 在笔记本中,你可以以各种文件格式快速读取数据并将其写回到 Lakehouse 资源。 本指南提供代码示例来帮助你开始使用自己的笔记本。

先决条件

  • 完成 为数据科学教程准备系统 的步骤,以创建新笔记本并将 Lakehouse 附加到其中。 在本文中,请按照以下步骤创建新笔记本,而不是导入现有笔记本。

将 Lakehouse 数据加载到笔记本中

注意

需要 Lakehouse 中的一些数据才能执行本部分中的步骤。 如果没有任何数据,请按照 下载数据集中的步骤并上传到 lakehouse ,将 churn.csv 文件添加到 Lakehouse。

将 Lakehouse 附加到 Microsoft Fabric 笔记本后,只需几个步骤即可浏览存储的数据,而无需离开页面并将其读入笔记本。 选择任何 Lakehouse 文件将显示“将数据加载”到 Spark 或 Pandas 数据帧的选项。 还可以复制文件的完整 ABFS 路径或友好的相对路径。

屏幕截图显示了将数据加载到 Pandas DataFrame 的选项。

选择其中一个“加载数据”提示会生成将文件加载到笔记本中的数据帧的代码单元。

屏幕截图显示了添加到笔记本的代码单元。

将 Spark DataFrame 转换为 Pandas DataFrame

此命令演示了如何将 Spark DataFrame 转换为 Pandas DataFrame,以供参考:

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

读取和写入各种文件格式

注意

修改特定包的版本可能会中断依赖于它的其他包。 例如,降级 azure-storage-blob 可能会导致依赖 PandasPandas 和其他各种库出现问题,包括 mssparkutilsfsspec_wrappernotebookutils。 可以在此处查看每个运行时的预安装包及其版本列表。

这些代码示例演示 Pandas作以读取和写入各种文件格式。 这些示例不应按教程顺序运行,而是根据需要复制并粘贴到自己的笔记本中。

注意

必须替换以下代码示例中的文件路径。 Pandas 支持相对路径(如下所示)和完整的 ABFS 路径。 可以使用前面的步骤从接口中检索和复制任一类型的路径。

从 CSV 文件读取数据

import pandas as pd

# Read a CSV file from your Lakehouse into a Pandas DataFrame
# Replace LAKEHOUSE_PATH and FILENAME with your own values
df = pd.read_csv("/LAKEHOUSE_PATH/Files/FILENAME.csv")
display(df)

将数据作为 CSV 文件写入

import pandas as pd 

# Write a Pandas DataFrame into a CSV file in your Lakehouse
# Replace LAKEHOUSE_PATH and FILENAME with your own values
df.to_csv("/LAKEHOUSE_PATH/Files/FILENAME.csv") 

读取 Parquet 文件中的数据

import pandas as pd 
 
# Read a Parquet file from your Lakehouse into a Pandas DataFrame
# Replace LAKEHOUSE_PATH and FILENAME with your own values
df = pd.read_parquet("/LAKEHOUSE_PATH/Files/FILENAME.parquet") 
display(df)

将数据作为 Parquet 文件写入

import pandas as pd 
 
# Write a Pandas DataFrame into a Parquet file in your Lakehouse
# Replace LAKEHOUSE_PATH and FILENAME with your own values
df.to_parquet("/LAKEHOUSE_PATH/Files/FILENAME.parquet") 

从 Excel 文件读取数据

import pandas as pd 
 
# Read an Excel file from your Lakehouse into a Pandas DataFrame
# Replace LAKEHOUSE_PATH and FILENAME with your own values
# If the file is in a subfolder, add the correct file path after Files/
# For the default lakehouse attached to the notebook, use: df = pd.read_excel("/lakehouse/default/Files/FILENAME.xlsx") 
df = pd.read_excel("/LAKEHOUSE_PATH/Files/FILENAME.xlsx") 
display(df) 

将数据作为 Excel 文件写入

import pandas as pd 

# Write a Pandas DataFrame into an Excel file in your Lakehouse
# Replace LAKEHOUSE_PATH and FILENAME with your own values
df.to_excel("/LAKEHOUSE_PATH/Files/FILENAME.xlsx") 

读取 JSON 文件中的数据

import pandas as pd 
 
# Read a JSON file from your Lakehouse into a Pandas DataFrame
# Replace LAKEHOUSE_PATH and FILENAME with your own values
df = pd.read_json("/LAKEHOUSE_PATH/Files/FILENAME.json") 
display(df) 

将数据作为 JSON 文件写入

import pandas as pd 
 
# Write a Pandas DataFrame into a JSON file in your Lakehouse
# Replace LAKEHOUSE_PATH and FILENAME with your own values
df.to_json("/LAKEHOUSE_PATH/Files/FILENAME.json") 

使用 Delta 表

Delta 表是 Microsoft Fabric 中的默认表格式,存储在 Lakehouse 的 “表” 部分中。 与文件不同,Delta 表需要使用两个步骤来处理 pandas:首先将表读入 Spark 数据帧,然后将其转换为 pandas 数据帧。

创建测试 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.format("delta").load("Tables/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 的 “表” 部分中创建的增量表可以在没有任何额外的注册或配置步骤的情况下被发现,并且可以使用 Spark SQL 查询。 它们也会显示在 Lakehouse 资源管理器界面中(可能需要刷新 Lakehouse 资源管理器才能查看最近的更改)。