pyarrowを試してみた
pyarrow
でのparquetの読み込みとDataFrameへの変換のパフォーマンスを確認してみた。
parquetは読み込みは当然csvよりも早いけど。DataFrameへの変換が遅いのでpandasの壁は越えられない…
内容はGetting Startedそのまま
データセット: Uber Pickups in New York City
パターン
- CSVを読み込んでDataFrameへ変換
- Parquetを読み込み
- Parquetを読み込んでDataFrameへ変換
import pyarrow as pa import pandas as pd import pyarrow.parquet as pq CSV = 'uber-raw-data-janjune-15.csv' PARQUET = 'uber-raw-data-janjune-15.parquet' df = pd.read_csv(CSV) pq.write_table(pa.Table.from_pandas(df), PARQUET)
!ls -lh uber-raw-data-janjune-15.* -rwxr-xr-x@ 1 kazup0n staff 526M 11 13 19:30 [31muber-raw-data-janjune-15.csv[m[m -rw-r--r-- 1 kazup0n staff 69M 2 19 01:57 uber-raw-data-janjune-15.parquet
from time import time def bench(proc, label): start = time() proc() end = time() print('{}@{}'.format(label, end-start)) def read_and_to_df(): table = pq.read_table(PARQUET) table.to_pandas() bench(lambda : pd.read_csv(CSV), 'csv') bench(lambda : pq.read_table(PARQUET), 'parquet') bench(read_and_to_df, 'read_and_to_df')
csv@10.470412969589233
parquet@5.245838642120361
read_and_to_df@10.890496969223022