So lesen und schreiben Sie Daten mit Pandas in Microsoft Fabric

Microsoft Fabric-Notebooks unterstützen die nahtlose Interaktion mit Lakehouse-Daten mithilfe von Pandas, der beliebtesten Python-Bibliothek für die Datenuntersuchung und -verarbeitung. Innerhalb eines Notizbuchs können Sie Daten schnell aus Ihren Lakehouse-Ressourcen in verschiedenen Dateiformaten lesen und zurückschreiben. Dieser Leitfaden enthält Codebeispiele, die Ihnen den Einstieg mit Ihrem eigenen Notebook erleichtern.

Voraussetzungen

  • Führen Sie die Schritte in "Vorbereiten Ihres Systems für Data Science-Lernprogramme " aus, um ein neues Notizbuch zu erstellen und ihr ein Lakehouse anzufügen. Führen Sie für diesen Artikel die Schritte zum Erstellen eines neuen Notizbuchs aus, anstatt ein vorhandenes Notizbuch zu importieren.

Verwenden Sie diesen Workflow, um das richtige Muster auszuwählen:

  • Einzelne Dateien im Lakehouse können mit Pandas mithilfe eines Pfads unter Files gelesen oder geschrieben werden.
  • Für tabellenartige Daten in einem Lakehouse verwenden Sie Spark- und Delta-Tabellen und konvertieren Sie dann nur dann in Pandas, wenn das Ergebnis in Ihren Notizbuchspeicher passt.
  • Wenn die Daten groß sind, speichern Sie sie in Spark zur Filterung, Aggregation und Transformation, bevor Sie sie in einen Pandas DataFrame umwandeln.

Laden von Lakehouse-Daten in ein Notebook

Hinweis

Sie benötigen einige Daten in Ihrem Lakehouse, um die Schritte in diesem Abschnitt auszuführen. Wenn Sie keine Daten haben, führen Sie die Schritte im Download-Dataset aus, und laden Sie es in Lakehouse hoch, um die churn.csv Datei zu Ihrem Lakehouse hinzuzufügen.

Sobald du ein Lakehouse an dein Microsoft Fabric-Notizbuch anhängst, kannst du gespeicherte Daten erkunden, ohne die Seite zu verlassen, und den Dateipfad kopieren, den du für den Notebook-Code brauchst. Im Lakehouse-Explorer kannst du entweder den generierten Notizbuch-Ausschnitt verwenden, um eine Datei in ein Spark- oder Pandas-DataFrame zu laden, oder den vollständigen ABFS-Pfad der Datei kopieren. Für das Standard-Lakehouse, das am Notizbuch angehängt ist, sieht ein typischer Dateipfad wie folgt /lakehouse/default/Files/...aus. Für andere Lakehouses verwenden Sie den ABFS-Pfad aus dem Lakehouse-Explorer.

Screenshot, der die Optionen zum Laden von Daten in einen Pandas-DataFrame zeigt.

Die Auswahl einer Datei im Lakehouse-Explorer kann Code erzeugen, der die Datei in ein DataFrame in Ihrem Notizbuch lädt.

Screenshot mit einer dem Notebook hinzugefügten Codezelle.

Konvertieren eines Spark-Dataframes in einen Pandas-Dataframe

Important

toPandas() lädt den vollständigen Spark DataFrame in den Speicher des Notebook-Treibers. Verwende es nur für kleine bis mittlere Ergebnismengen. Wenn dein Datensatz groß ist, filtere, aggregiere oder sample ihn in Spark, bevor du in Pandas konvertierst.

Dieser Befehl zeigt als Orientierung, wie Sie einen Spark-Dataframe in einen Pandas-DataFrame konvertieren:

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

Lesen und Schreiben verschiedener Dateiformate

Hinweis

Das Ändern der Version eines bestimmten Pakets könnte möglicherweise dazu führen, dass andere Pakete nicht mehr funktionieren, die davon abhängig sind. Beispielsweise kann das Herabstufen von azure-storage-blob Probleme mit Pandas und verschiedenen anderen Bibliotheken verursachen, die auf Pandas basieren, einschließlich mssparkutils, fsspec_wrapper und notebookutils. Sie können die Liste der vorinstallierten Pakete und deren Versionen für jede Laufzeit hier anzeigen.

Diese Codebeispiele veranschaulichen Pandas-Vorgänge zum Lesen und Schreiben verschiedener Dateiformate. Diese Beispiele sollen nicht sequenziell wie in einem Lernprogramm ausgeführt werden, sondern nach Bedarf in Ihr eigenes Notizbuch kopiert und eingefügt werden.

Hinweis

Du musst die Dateipfade in diesen Codebeispielen durch den vollständigen Pfad der Datei in deinem Lakehouse ersetzen. Für das Standard-Lakehouse, das am Notizbuch angehängt ist, verwenden Sie einen Pfad wie /lakehouse/default/Files/.... Für andere Lakehouses verwenden Sie den ABFS-Pfad aus dem Lakehouse-Explorer.

Lesen von Daten aus einer CSV-Datei

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)

Schreiben von Daten als CSV-Datei

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)

Daten aus einer Parquet-Datei lesen

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)

Daten als Parquet-Datei schreiben

import pandas as pd

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

Lesen von Daten aus einer Excel-Datei

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)

Schreiben von Daten als Excel-Datei

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)

Lesen von Daten aus einer JSON-Datei

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)

Schreiben von Daten als JSON-Datei

import pandas as pd

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

Arbeiten mit Delta-Tabellen

Delta-Tabellen sind das Standardtabellenformat in Microsoft Fabric und werden im Tabellenabschnitt Ihres Lakehouse gespeichert. Dateien und Tabellen sind verschiedene Speicherorte in Fabric und verwenden unterschiedliche Zugriffsmuster. Um mit Delta-Tabellen in Pandas zu arbeiten, liest man die Tabelle zunächst in einen Spark DataFrame und konvertiert das gefilterte Ergebnis erst dann in einen Pandas-DataFrame, wenn es in den Treiberspeicher passt.

Erstellen einer Delta-Testtabelle

Um die Schritte in diesem Abschnitt auszuführen, benötigen Sie eine Delta-Tabelle in Ihrem Lakehouse. Führen Sie die Schritte im Download-Dataset aus, und laden Sie sie in Lakehouse hoch, um die churn.csv Datei zu Ihrem Lakehouse hinzuzufügen, und erstellen Sie dann eine Testtabelle aus der churn.csv Datei, indem Sie diesen Code in Ihrem Notizbuch ausführen:

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")

Dieser Schritt erstellt eine Delta-Tabelle namens churn_table , die Sie zum Testen der folgenden Beispiele verwenden können.

Daten aus einer Delta-Tabelle lesen

# 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)

Sie können Delta-Tabellen auch mithilfe der Spark SQL-Syntax lesen:

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

pandas-DataFrame in eine Delta-Tabelle schreiben

# 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")

Sie können auch in einem bestimmten Pfad im Abschnitt "Tabellen" speichern:

# 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")

Schreibmodi für Delta-Tabellen

Beim Schreiben in Delta-Tabellen können Sie verschiedene Modi angeben:

# 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")

Hinweis

Delta-Tabellen, die im Abschnitt "Tabellen " Ihres Lakehouse erstellt wurden, können ohne zusätzliche Registrierungs- oder Konfigurationsschritte ermittelt werden und mithilfe von Spark SQL abgefragt werden. Sie werden auch in der Lakehouse-Explorer-Schnittstelle angezeigt (Möglicherweise müssen Sie den Lakehouse-Explorer aktualisieren, um aktuelle Änderungen zu sehen).