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の方が良さそうです。