PyArrow を使って pandas を強化する

PythonPythonBeginner
今すぐ練習

This tutorial is from open-source community. Access the source code

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、pandas で PyArrow を利用して機能を拡張し、さまざまな API のパフォーマンスを向上させるプロセスを案内します。PyArrow は、より広範なデータ型、すべてのデータ型に対する欠損値のサポート、IO リーダーの統合、および他のデータフレーム ライブラリとの相互運用性により、pandas を強化します。

VM のヒント

VM の起動が完了したら、左上隅をクリックして ノートブック タブに切り替え、Jupyter Notebook を使って練習します。

場合によっては、Jupyter Notebook が読み込み終わるまで数秒待つ必要があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。

学習中に問題がある場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。

PyArrow のインストール

始める前に、サポートされている最小限の PyArrow バージョンがインストールされていることを確認してください。これは、Python 環境で次のコマンドを実行することで行えます。

## これはコメントです
## pip を使って PyArrow をインストールします
pip install pyarrow

データ構造の統合

PyArrow を使うと、pandas のデータ構造を NumPy 配列と同様に PyArrow ChunkedArray で直接バックアップすることができます。方法は以下の通りです。

## pandas をインポート
import pandas as pd

## PyArrow データ型を持つ pandas の Series、Index、DataFrame を作成
ser = pd.Series([-1.5, 0.2, None], dtype="float32[pyarrow]")
idx = pd.Index([True, None], dtype="bool[pyarrow]")
df = pd.DataFrame([[1, 2], [3, 4]], dtype="uint64[pyarrow]")

パラメータ付きの PyArrow 型の使用

パラメータを受け取る PyArrow 型の場合、それらのパラメータ付きの PyArrow 型を ArrowDtype に渡して、dtype パラメータで使用することができます。

## PyArrow をインポート
import pyarrow as pa

## PyArrow のリスト型を持つ pandas の Series を作成
list_str_type = pa.list_(pa.string())
ser = pd.Series([["hello"], ["there"]], dtype=pd.ArrowDtype(list_str_type))

PyArrow 配列を pandas のデータ構造に変換する

PyArrow 配列または ChunkedArray を持っている場合、それを Series、Index、DataFrame などの pandas のデータ構造に変換することができます。

## PyArrow 配列を作成
pa_array = pa.array([{"1": "2"}, {"10": "20"}, None], type=pa.map_(pa.string(), pa.string()))

## PyArrow 配列を pandas の Series に変換
ser = pd.Series(pd.arrays.ArrowExtensionArray(pa_array))

PyArrow の操作

PyArrow のデータ構造の統合は、pandas の ExtensionArray インターフェイスを通じて実装されています。このインターフェイスが pandas API 内に統合されている場所には、サポートされる機能が存在します。

## PyArrow データ型を持つ pandas の Series を作成
ser = pd.Series([-1.545, 0.2, None], dtype="float32[pyarrow]")

## 様々な操作を実行
ser.mean()
ser + ser
ser > (ser + 1)
ser.dropna()
ser.isna()
ser.fillna(0)

PyArrow を使ったデータの読み込み

PyArrow は、いくつかの pandas IO リーダーに統合されている IO 読み込み機能を提供しています。

## IO モジュールをインポート
import io

## StringIO オブジェクトを作成
data = io.StringIO("""a,b,c\n1,2.5,True\n3,4.5,False""")

## エンジンとして PyArrow を使ってデータを pandas の DataFrame に読み込む
df = pd.read_csv(data, engine="pyarrow")

まとめ

この実験では、PyArrow を使って pandas の機能を拡張し、パフォーマンスを向上させる方法を検討しました。pandas のデータ構造を PyArrow のデータ型に変換し、様々な操作を行う方法を学びました。また、PyArrow の IO 読み込み機能を使ってデータを読み込む方法も見てきました。