Come leggere e scrivere dati con Pandas in Microsoft Fabric

I notebook di Microsoft Fabric supportano l'interazione senza interruzioni con i dati di Lakehouse usando Pandas, la libreria Python più diffusa per l'esplorazione e l'elaborazione dei dati. All'interno di un notebook è possibile leggere rapidamente i dati da e scrivere di nuovo i dati nelle risorse Lakehouse in vari formati di file. Questa guida fornisce esempi di codice che consentono di iniziare a usare il proprio notebook.

Prerequisiti

Usa questo flusso di lavoro per scegliere il modello giusto:

  • Per file singoli nel Lakehouse, leggili o scrivili con Pandas usando un percorso sotto Files.
  • Per dati simili a tabelle in un Lakehouse, usa tabelle Spark e Delta, poi converti in Panda solo quando il risultato rientra nella memoria del tuo notebook.
  • Se i dati sono grandi, conservali in Spark per filtraggio, aggregazione e trasformazione prima di convertirli in un DataFrame Pandas.

Caricare i dati del lakehouse nel notebook

Nota

Per seguire i passaggi descritti in questa sezione, sono necessari alcuni dati in Lakehouse. Se non si dispone di dati, seguire la procedura descritta in Scaricare il set di dati e caricare in lakehouse per aggiungere il file churn.csv a Lakehouse.

Una volta che allega un Lakehouse al tuo notebook Microsoft Fabric, puoi esplorare i dati memorizzati senza lasciare la pagina e copiare il percorso del file necessario per il codice del notebook. Nell'esploratore Lakehouse, puoi usare lo snippet generato del notebook per caricare un file in un DataFrame di Spark o Pandas oppure copiare il percorso ABFS completo del file. Per il Lakehouse predefinito collegato al notebook, un percorso tipico dei File appare come /lakehouse/default/Files/.... Per altre Lakehouse, usa il percorso ABFS da Esplora Lakehouse.

Screenshot che mostra le opzioni per caricare i dati in un DataFrame Pandas.

Selezionando un file nell'esploratore Lakehouse, si può generare codice che carica il file in un DataFrame nel tuo notebook.

Screenshot che mostra una cella di codice aggiunta al notebook.

Conversione di un DataFrame Spark in un DataFrame Pandas

Importante

toPandas() carica l'intero DataFrame Spark nella memoria del driver del notebook. Usalo solo per set di risultati piccoli o medi. Se il tuo dataset è grande, filtralo, lo aggreghi o campionarlo in Spark prima di convertirlo in Pandas.

Per riferimento, questo comando mostra come convertire un DataFrame Spark in un DataFrame Pandas:

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

Lettura e scrittura di vari formati di file

Nota

La modifica della versione di un pacchetto specifico potrebbe potenzialmente interrompere altri pacchetti che dipendono da esso. Ad esempio, il downgrade azure-storage-blob potrebbe causare problemi con Pandas e varie altre librerie che si basano su Pandas, tra cui mssparkutils, fsspec_wrappere notebookutils. È possibile visualizzare l'elenco dei pacchetti preinstallati e delle relative versioni per ogni runtime qui.

Questi esempi di codice illustrano le operazioni pandas per leggere e scrivere vari formati di file. Questi esempi non devono essere eseguiti in sequenza come in un'esercitazione, ma piuttosto copiati e incollati nel proprio notebook in base alle esigenze.

Nota

Devi sostituire i percorsi dei file in questi esempi di codice con il percorso completo del file nel tuo Lakehouse. Per il Lakehouse predefinito collegato al notebook, usa un percorso come /lakehouse/default/Files/.... Per altre Lakehouse, usa il sentiero ABFS dell'esploratore Lakehouse.

Leggere i dati da un file 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)

Scrivi i dati in un file 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)

Leggere i dati da un file 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)

Scrivi i dati in un file Parquet

import pandas as pd

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

Importare dati da un file di 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)

Scrivere dati come file di 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)

Leggere i dati da un file 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)

Scrivi i dati in un file JSON

import pandas as pd

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

Utilizzo delle tabelle Delta

Le tabelle Delta sono il formato di tabella predefinito in Microsoft Fabric e vengono archiviate nella sezione Tabelle di Lakehouse. File e tabelle sono posizioni di archiviazione diverse in Fabric e utilizzano pattern di accesso differenti. Per lavorare con le tabelle Delta in Pandas, prima leggi la tabella in un DataFrame Spark, poi converti il risultato filtrato in un DataFrame Pandas solo quando si adatta alla memoria del driver.

Creare una tabella Delta di test

Per seguire i passaggi descritti in questa sezione, è necessaria una tabella Delta in Lakehouse. Seguire la procedura descritta in Scaricare il set di dati e caricare in lakehouse per aggiungere il file churn.csv a Lakehouse, quindi creare una tabella di test dal file churn.csv eseguendo questo codice nel notebook:

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

Questo passaggio crea una tabella Delta chiamata churn_table che puoi usare per testare i seguenti esempi.

Leggere i dati da una tabella 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)

È anche possibile leggere tabelle Delta usando la sintassi SPARK SQL:

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

Scrivere un dataframe pandas in una tabella 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")

È anche possibile salvare in un percorso specifico nella sezione Tabelle:

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

Modalità di scrittura per le tabelle Delta

Quando si scrive in tabelle Delta, è possibile specificare diverse modalità:

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

Nota

Le tabelle delta create nella sezione Tabelle di Lakehouse sono individuabili senza ulteriori passaggi di registrazione o configurazione e possono essere sottoposte a query tramite Spark SQL. Vengono visualizzate anche nell'interfaccia Lakehouse Explorer (potrebbe essere necessario aggiornare Lakehouse Explorer per visualizzare le modifiche recenti).