トップ / 基礎知識
pandasの書き方のままSnowflake上のデータを扱えるが、既存のSnowpark DataFrameやto_pandas()と何が違うのかを整理します。
Snowpark pandas API(公式には「pandas on Snowflake」)は、import pandas as pdを次のように変えるだけで、手元のpandasコードをSnowflake上のデータに対して実行できるようにする機能です。
# 変更前(ふつうのpandas。手元のメモリで実行)
import pandas as pd
df = pd.read_csv("orders.csv")
# 変更後(Snowpark pandas。Snowflake上のテーブルに対して実行)
import modin.pandas as pd
import snowflake.snowpark.modin.plugin
df = pd.read_snowflake("ORDERS")
公式ドキュメントは「importの記述を変えるだけで、慣れ親しんだpandasネイティブの体験を、Snowflakeのスケーラビリティとセキュリティの恩恵とともに得られる」と説明しています。インストールはpip install "snowflake-snowpark-python[modin]"で行います。
Snowpark pandasは、オープンソースの分散pandas実装であるModinをフロントエンド層として使い、pandasと同じAPIのシグネチャとDataFrameの意味論を保ったまま、裏側の処理をSnowflakeへ委譲する構成になっています。ここまでで紹介してきた通常のSnowpark DataFrame(session.table()やcol()を使う書き方)とは別の入り口ですが、最終的にはどちらもSnowflakeのSQLエンジンで処理される点は共通です。
Snowpark Python 1.40.0以降、Snowpark pandasは既定で「ハイブリッド実行」が有効になっています。公式ドキュメントによれば、データ件数がおおむね10万行程度以下の小規模なデータはローカルのpandasエンジンで実行され、それを超える規模のデータはSnowflake側のSQLへ変換されて分散実行されます。どちらで実行されるかを意識してコードを書き分ける必要は無く、Snowpark pandas側が自動的に切り替えます。
pandasのすべてのAPIがSnowflake上で分散実装されているわけではありません。公式ドキュメントは、サポート対象外のAPIを呼び出すとNotImplementedErrorが送出されると明記しています。実際に何がサポートされているかは、Snowflake公式のSnowpark pandas対応API一覧(sources参照)で確認できます。
このサイトの「to_pandas」ページで扱ったDataFrame.to_pandas()は、Snowpark DataFrameの実行結果を手元のメモリに丸ごと取り出して、ふつうのpandas DataFrameに変換するメソッドです。取り出した後は完全にローカルの処理になるため、結果がローカルのメモリに収まる規模であることが前提になります。
対して、Snowpark pandas API(pandas on Snowflake)は、pandasの書き方のままデータをSnowflakeに置いたまま処理するための入り口です。目的が逆であることに注意してください。
to_pandas():Snowpark DataFrameで絞り込み・集計を終えた「小さくなった最終結果」を、ローカルでさらにpandas/Polars等のエコシステムに繋ぎたいときに使うこのサイトの各メソッドページはSnowpark DataFrameとPolarsの対応表として作られていますが、Snowpark pandas APIは「Snowpark DataFrameの構文を覚えたくない・pandasの書き方のまま移行したい」場合の第三の選択肢です。判断の軸は次のとおりです。
col()・select()等)を使う:このサイトの各ページで比較している通常の書き方。Snowparkのメソッドチェーンに慣れている、またはSQLに近い形で最適化を意識したい場合modin.pandas)を使う:既存のpandasコード資産をSnowflakeに移行したい、チームがpandasの書き方に慣れている場合。ただし前述のとおりサポート外のAPIには当たる公式ドキュメントの記載にもとづく解説です(実行検証はしていません)。確認日:2026-09-19