Pythonの代表的データ分析ライブラリ「pandas 3.0」が公開された。Copy-on-Write(CoW)のデフォルト化を中心に挙動が大きく変わっており、既存コードへの影響と、今後の選択判断が重要になる。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
Pythonの定番データ分析ライブラリ「pandas」が、大きな転換点となるv3メジャーアップデートを迎えた。pandas 3.0.0は2026年1月22日(日本時間)に正式リリースされたが、従来の書き方がそのまま通らない変更も一部含まれている。
今回のバージョン3.0(v3)で最も注目すべき変更が、Copy-on-Write(コピー・オン・ライト:CoW)の完全デフォルト化である。
v3のCoWでは、DataFrame(表データ)やSeries(1次元データ)に対する操作について、「どの処理が元データを変更するのか」が明確に定義されるようになった。これにより、これまであいまいだった連鎖代入(chained assignment)の挙動が整理され、「どこを変更したいのか」が分からない書き方では、元データを変更できない仕様となっている。
上の図は、その挙動の違いが結果として表れる代表的な例である。図のコードは、以下のように明示的に書き換えることで、意図した処理を実現できる。
source_df.loc[source_df["A"] > 0, "B"] = 999
source_df
――ここからは『Deep Insider Brief』恒例の“ひと言コメント”として、今回の発表内容をあらためて整理しながら、技術の“今”をもう一歩踏み込んで見ていく。
Deep Insider編集長の一色です。こんにちは。
pandasを日常的に利用している人は多いと思いますが、教科書的なコンテンツや、生成AIによるコード生成においても、pandasが前提として使われる状況は、2026年2月の現時点でも大きくは変わっていないでしょう。
一方で、先進的な開発者やデータ分析者の間では、より高速に処理できる類似ライブラリとして、Polarsを推す声が目立つようになっています。私自身も、ついpandasを使ってしまう場面は多いものの、ゼロから設計するのであれば、基本的にはPolarsを選ぶべきだろうと考えています。
pandasが、AIや機械学習、データサイエンス、データ分析の分野に長年にわたって果たしてきた役割は非常に大きく、その功績には大いに敬意を払うべきです。ただし、今回のような設計変更を含むアップデートが、結果としてPolarsへの移行をさらに後押しする可能性があると考えると、個人的には少し複雑な気持ちもあります。
実際に、海外掲示板のredditのスレッドや、Hacker Newsのスレッドを見ても、「性能や並列処理を重視するならPolarsを選ぶべきだ」という意見が数多く見られます。中には、「これほど破壊的な変更があるなら、いっそPolarsへ移行した方が幸せになれる」という、かなり踏み込んだ意見もあります。
私の考えとしては、数年かけて積み上げてきた社内コードや周辺ライブラリ、運用ノウハウがある場合には、まずはpandas 3.0への「安全な移行」を優先すべきだと思います。一方で、パフォーマンスを重視するプロジェクトや、新たに設計する分析基盤であれば、Polarsへかじを切るには、今が一つの良い機会だと考えています。
以下では、公式情報を基に、pandas 3.0で導入された主な更新内容を整理する。
# 従来の書き方
df.assign(new_col = lambda x: x["a"] + x["b"])
# 3.0の新しい書き方
df.assign(new_col = pd.col("a") + pd.col("b"))
Copyright© Digital Advantage Corp. All Rights Reserved.