Udostępnij przez


Jak odczytywać i zapisywać dane za pomocą biblioteki Pandas w usłudze Microsoft Fabric

Notesy usługi Microsoft Fabric obsługują bezproblemową interakcję z danymi usługi Lakehouse przy użyciu biblioteki Pandas, najpopularniejszej biblioteki języka Python na potrzeby eksploracji i przetwarzania danych. W notesie można szybko odczytywać dane z zasobów usługi Lakehouse i zapisywać je z powrotem w różnych formatach plików. Ten przewodnik zawiera przykłady kodu ułatwiające rozpoczęcie pracy we własnym notesie.

Wymagania wstępne

Ładowanie danych usługi Lakehouse do notesu

Uwaga

Aby wykonać kroki opisane w tej sekcji, potrzebne są pewne dane w usłudze Lakehouse. Jeśli nie masz żadnych danych, wykonaj kroki opisane w temacie Pobieranie zestawu danych i przekazywanie do usługi Lakehouse , aby dodać plik churn.csv do usługi Lakehouse.

Po dołączeniu usługi Lakehouse do notesu usługi Microsoft Fabric możesz eksplorować przechowywane dane bez opuszczania strony i odczytywać je do notesu, wykonując kilka kroków. Wybranie dowolnego pliku lakehouse powoduje wyświetlenie opcji "Ładowanie danych" do ramki danych Platformy Spark lub biblioteki Pandas. Możesz również skopiować pełną ścieżkę ABFS pliku lub przyjazną ścieżkę względną.

Zrzut ekranu przedstawiający opcje ładowania danych do ramki danych Biblioteki Pandas.

Wybór jednego z monitów "Załaduj dane" powoduje wygenerowanie komórki kodu, która ładuje plik do Ramki danych w notesie.

Zrzut ekranu przedstawiający komórkę kodu dodaną do notesu.

Konwertowanie ramki danych platformy Spark na ramkę danych biblioteki Pandas

W tym poleceniu pokazano, jak przekonwertować ramkę danych platformy Spark na ramkę danych Biblioteki Pandas:

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

Odczytywanie i zapisywanie różnych formatów plików

Uwaga

Zmodyfikowanie wersji określonego pakietu może potencjalnie spowodować przerwanie innych pakietów, które od niego zależą. Na przykład obniżenie poziomu azure-storage-blob może powodować problemy z różnymi bibliotekami, które korzystają Pandasz Pandas elementów , w tym mssparkutils, fsspec_wrapperi notebookutils. Listę wstępnie zainstalowanych pakietów i ich wersji dla każdego środowiska uruchomieniowego można wyświetlić tutaj.

Te przykłady kodu przedstawiają operacje biblioteki Pandas umożliwiające odczytywanie i zapisywanie różnych formatów plików. Te próbki nie są przeznaczone do uruchamiania sekwencyjnie, jak w samouczku, lecz do skopiowania i wklejenia do własnego notatnika według potrzeb.

Uwaga

Należy zastąpić ścieżki plików w tych przykładach kodu. Biblioteka Pandas obsługuje zarówno ścieżki względne, jak pokazano tutaj, i pełne ścieżki ABFS. Ścieżki dowolnego typu można pobrać i skopiować z interfejsu, wykonując poprzednie kroki.

Odczytywanie danych z pliku 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)

Zapisywanie danych jako pliku 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") 

Odczytywanie danych z pliku 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)

Zapisywanie danych jako pliku 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") 

Odczytywanie danych z pliku programu 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) 

Zapisywanie danych jako pliku programu 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") 

Odczytywanie danych z pliku 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) 

Zapisywanie danych jako pliku 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") 

Praca z tabelami delty

Tabele różnicowe są domyślnym formatem tabeli w usłudze Microsoft Fabric i są przechowywane w sekcji Tabele usługi Lakehouse. W przeciwieństwie do plików tabele delty wymagają dwuetapowego procesu pracy z biblioteką pandas: najpierw odczytaj tabelę do ramki danych Platformy Spark, a następnie przekonwertuj ją na ramkę danych biblioteki pandas.

Tworzenie testowej tabeli delty

Aby wykonać kroki opisane w tej sekcji, potrzebujesz tabeli delty w usłudze Lakehouse. Wykonaj kroki opisane w temacie Pobieranie zestawu danych i przekazywanie do usługi Lakehouse , aby dodać plik churn.csv do usługi Lakehouse, a następnie utwórz tabelę testową z pliku churn.csv , uruchamiając ten kod w notesie:

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

Spowoduje to utworzenie tabeli delty o nazwie churn_table , której można użyć do testowania poniższych przykładów.

Odczytywanie danych z tabeli delty

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

Tabele delty można również odczytywać przy użyciu składni Spark SQL:

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

Zapisywanie ramki danych biblioteki pandas w tabeli delty

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

Możesz również zapisać w określonej ścieżce w sekcji Tabele:

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

Tryby zapisu dla tabel różnicowych

Podczas zapisywania w tabelach delty można określić różne tryby:

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

Uwaga

Tabele różnicowe utworzone w sekcji Tabele usługi Lakehouse są wykrywalne bez żadnych dodatkowych kroków rejestracji lub konfiguracji i mogą być odpytywane przy użyciu usługi Spark SQL. Są one również wyświetlane w interfejsie eksploratora usługi Lakehouse (może być konieczne odświeżenie eksploratora usługi Lakehouse w celu wyświetlenia ostatnich zmian).