Microsoft Fabric ノートブックは、データの探索と処理に最も人気のある Python ライブラリである Pandas を使用したレイクハウス データのシームレスな操作をサポートします。 ノートブック内では、さまざまなファイル形式で Lakehouse リソースからデータをすばやく読み取ったり、Lakehouse リソースにデータを書き戻したりできます。 このガイドでは、ユーザー自身のノートブックの使用を開始するのに役立つコード サンプルを提供します。
前提条件
Microsoft Fabric サブスクリプションを取得します。 または、無料の Microsoft Fabric 試用版にサインアップします。
Microsoft Fabric にサインインします。
ホーム ページの左下にあるエクスペリエンス スイッチャーを使用して Fabric に切り替えます。
- 「データ サイエンス用にシステムを準備する」の手順を完了して、新しいノートブックを作成し、それに Lakehouse をアタッチします。 この記事では、既存のノートブックをインポートするのではなく、新しいノートブックを作成する手順に従います。
このワークフローを使って適切なパターンを選びましょう:
- Lakehouse内の単一ファイルについては、
Filesの下のパスを使ってPandasで読み書きしてください。 - Lakehouseのテーブルのようなデータなら、SparkとDeltaのテーブルを使い、ノートのメモリに収まるまでPandasに変換してください。
- データが大きい場合は、Pandas DataFrameに変換する前にフィルタリング、集約、変換のためにSparkに保管してください。
レイクハウス データをノートブックに読み込む
注記
このセクションの手順に従うには、Lakehouse にデータがいくつか必要です。 データがない場合は、「 データセットをダウンロードして lakehouse にアップロードする 」の手順に従って 、churn.csv ファイルを Lakehouse に追加します。
LakehouseをMicrosoft Fabricノートブックに接続すると、ページを離れずに保存データを探索し、ノートブックコードに必要なファイルパスをコピーできます。 Lakehouseエクスプローラーでは、生成されたノートブックのスニペットを使ってファイルをSparkやPandas DataFrameに読み込むか、ファイルのABFSパス全体をコピーできます。 ノートブックに付随しているデフォルトのLakehouseの場合、典型的なファイルパスは /lakehouse/default/Files/...のようになります。 他のレイクハウスについては、レイクハウス・エクスプローラーのABFSパスをご利用ください。
Lakehouseエクスプローラーでファイルを選択すると、そのファイルをノートブック内のDataFrameに読み込むコードを生成できます。
Spark DataFrame を Pandas DataFrame に変換する
Important
toPandas() Spark DataFrameの全てをノートブックのドライバーメモリに読み込みます。 小規模から中規模の結果セットに限って使ってください。 データセットが大きい場合は、Pandasに変換する前にSparkでフィルタリング、集約、またはサンプリングを行いましょう。
参考までに、以下のコマンドを使用すれば、Spark DataFrame を Pandas DataFrame に変換できます。
# 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/...のようなパスを使います。 他のレイクハウスについては、レイクハウス・エクスプローラーのABFSパスをご利用ください。
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")
デルタ テーブルの操作
デルタ テーブルは Microsoft Fabric の既定のテーブル形式であり、Lakehouse の [テーブル ] セクションに格納されます。 ファイルとテーブルはFabric内の異なるストレージ場所であり、異なるアクセスパターンを使用しています。 PandasでDeltaテーブルを扱うには、まずテーブルをSpark DataFrameに読み込み、その後、ドライバメモリに収まる場合のみフィルタリング結果を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 テーブルからデータを読み取る
# 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)
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 エクスプローラーを更新する必要がある場合があります)。
関連するコンテンツ
- Data Wrangler を使用してデータをクリーンして準備する
- ML モデルのトレーニングを開始する