Python向けデータ分析ライブラリ「Pandas」の開発チームは、最新バージョンとなる「バージョン2.0」を2月26日(現地時間)に公開した。PandasはBSDライセンスで公開しているオープンソース・ソフトウェア。
「Pandas 2.0」では、処理性能向上に特に力を入れた。まず、「Apache Arrow」のPythonバインディングである「PyArrow」が使えるようになった。Apache Arrowは言語非依存のデータ分析フレームワークであり、データを列形式で扱うことで、データの読み出しやデータ処理を並列で実行できるようにしている。Pandas 2.0では、PyArrowを利用することで処理速度が向上し、メモリ消費量が減少した。特に、大規模データセットを扱うときに大きな効果が得られるという。
続いて、メモリ上でのデータ操作にコピーオンライト(Copy-on-Write)の手法を取り入れた。これは、オブジェクトをコピーしたときに、メモリ上ではすぐにはコピーせず、元データへの参照を作る手法だ。コピーしたデータに変更が加わるまで、参照を作成するだけで済ませ、変更が加わったら実際にコピーする。不必要にデータをコピーする回数が減り、同じようなデータのコピーが複数発生することがなくなるため、処理速度が向上し、メモリ消費量を削減できる。この改善も、大規模データセットを扱うときに大きな効果を感じられるようになっているという。
さらにIndexオブジェクトが、数値計算モジュール「NumPy」で扱える数値データ型をすべて扱えるようになった。前バージョンまでは、int64(64ビット符号付き整数型)、uint64(64ビット符号なし整数型)、float64(64ビット浮動小数点数型)の3種類しか扱えなかったが、新バージョンではこの3種類に加えてint8(8ビット符号付き整数型)、int16(16ビット符号付き整数型)、int32(32ビット符号付き整数型)、uint8(8ビット符号なし整数型)、uint16(16ビット符号なし整数型)、uint32(32ビット符号なし整数型)、float32(32ビット浮動小数点型)が扱えるようになった。前バージョンまでは小さい数字を扱っていても64ビットのIndexオブジェクトを作っていたが、新バージョンからは32ビット、16ビット、8ビットなど、小さいIndexオブジェクトも作れるようになり、メモリ消費量を節約できるようになった。
この記事は参考になりましたか?
- この記事の著者
-
CodeZine編集部(コードジンヘンシュウブ)
CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です