よっしーの私的空間

機械学習を中心に興味のあることについて更新します

pandasでデータ抽出する際の速度の比較(loc対query)

Pandas Dataframeに対して、locで抽出した方が良いのか、queryで抽出した方が良いのか。 可読性はqueryの方が良さそうですが、今回は性能面で比較してみようと思います。

1.データダウンロード

データはsklearnの「カリフォルニア住宅価格」を使用しました。

import pandas as pd
from sklearn import datasets
df = datasets.fetch_california_housing(as_frame=True).frame

2.処理時間計測

locとqueryそれぞれで%%timeitを使用して実行時間を計測します。

%%timeit -n 100
df.loc[(df['MedInc']>2.5) & (df['MedInc']<5)]

%%timeit -n 100
df.query('2.5<MedInc<5')

3.結果

結果はlocの方が倍ぐらい早いようでした。 複雑な条件になる場合はqueryの方が可読性が高いので、何度も呼び出さない場合はqueryでも良いと思いますが、速度を重視する場合はlocの方が良さそうです。