Чтение и запись данных с помощью Pandas в Microsoft Fabric

Записные книжки Microsoft Fabric поддерживают простое взаимодействие с данными Lakehouse с помощью Pandas, самой популярной библиотеки Python для изучения и обработки данных. В записной книжке можно быстро считывать данные из ресурсов 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, подключённого к ноутбуку, типичный путь к файлам выглядит как /lakehouse/default/Files/.... Для других Lakehouse используйте путь ABFS в обозревателе Lakehouse.

Снимок экрана, показывающий варианты загрузки данных в DataFrame Pandas.

Выбор файла в проводнике Lakehouse может сгенерировать код, который загружает файл в DataFrame в вашем ноутбуке.

Снимок экрана: ячейка кода, добавленная в записную книжку.

Преобразование Spark DataFrame в Pandas DataFrame

Important

toPandas() загружает весь DataFrame Spark в память драйвера ноутбука. Использую его только для небольших или средних наборов результатов. Если ваш набор данных большой, отфильтруйте, агрегируйте или сэмплируйте его в Spark перед конвертацией в Panda.

Для справки в этой команде показано, как преобразовать кадр данных Spark в кадр данных Pandas:

# 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/.... Для других Lakehouse используйте путь ABFS из обозревателя Lakehouse.

Чтение данных из 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, и они хранятся в разделе Tables вашего Lakehouse. Файлы и таблицы — это разные места хранения в Fabric, и они используют разные шаблоны доступа. Чтобы работать с таблицами Delta в Pandas, сначала загрузите таблицу в DataFrame Spark, затем преобразуйте отфильтрованный результат в DataFrame pandas только если он помещается в памяти драйвера.

Создание тестовой таблицы Delta

Чтобы выполнить шаги, описанные в этом разделе, вам потребуется таблица Delta в вашем Lakehouse. Выполните действия, описанные в разделе "Скачать набор данных" и отправьте его в 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")

Этот шаг создаёт таблицу Delta под названием churn_table , которую можно использовать для тестирования следующих примеров.

Чтение данных из таблицы 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)

Вы также можете читать таблицы Delta с помощью синтаксиса Spark SQL:

# 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 можно указать разные режимы:

# 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, чтобы увидеть последние изменения).