Skip to Content
Pythonデータサイエンスハンドブック 第2版 ―Jupyter、NumPy、pandas、Matplotlib、scikit-learnを使ったデータ分析、機械学習
book

Pythonデータサイエンスハンドブック 第2版 ―Jupyter、NumPy、pandas、Matplotlib、scikit-learnを使ったデータ分析、機械学習

by Jake VanderPlas, 菊池 彰
February 2024
Intermediate to advanced
576 pages
9h 17m
Japanese
O'Reilly Japan, Inc.
Content preview from Pythonデータサイエンスハンドブック 第2版 ―Jupyter、NumPy、pandas、Matplotlib、scikit-learnを使ったデータ分析、機械学習

24章ハイパフォーマンスpandas:evalとquery

これまで説明したように、PyDataスタックが強力であるのは、NumPyやpandasなどの直感的な上位レベルの構文を、コンパイルされた下位レベルのコードで実行する能力を基盤にしているからです。NumPyのベクトル化やブロードキャスト操作およびpandasのグループ化などがそのよい例です。こうした抽象化は多くの一般的ユースケースで効率的かつ効果的ですが、しばしば一時的な中間オブジェクトを生成し、計算時間とメモリ使用に過大なオーバーヘッドをもたらす可能性があります。

この問題に対応するため、コストのかかる中間配列の割り当てを行わず、C言語コードの実行速度で直接操作を行う機能として、NumExprライブラリ(https://github.com/pydata/numexpr)のeval関数とquery関数をpandasは提供します。この章では、この使い方を説明し、どのような場合にこれらを使用するべきか、いくつかの経験則を示します。

24.1 queryとevalの必要性:複合表現

すでに見てきたように、NumPyとpandasは高速なベクトル化演算をサポートしています。例えば、2つの配列の要素ごと加算は次のように実行します。

In [1]: import numpy as np
        rng = np.random.default_rng(42)
        x = rng.random(1000000)
        y = rng.random(1000000)
        %timeit x + y
Out[1]: 2.21 ms ± 142 μs per loop (mean ± std. dev. of 7 runs, 100 loops each)
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

Pythonデータサイエンスハンドブック ―Jupyter、NumPy、pandas、Matplotlib、scikit-learnを使ったデータ分析、機械学習

Pythonデータサイエンスハンドブック ―Jupyter、NumPy、pandas、Matplotlib、scikit-learnを使ったデータ分析、機械学習

Jake VanderPlas, 菊池 彰
推薦システム実践入門 ―仕事で使える導入ガイド

推薦システム実践入門 ―仕事で使える導入ガイド

風間 正弘, 飯塚 洸二郎, 松村 優也
プロダクトマネージャーのしごと 第2版 ―1日目から使える実践ガイド

プロダクトマネージャーのしごと 第2版 ―1日目から使える実践ガイド

Matt LeMay, 永瀬 美穂, 吉羽 龍太郎, 原田 騎郎, 高橋 一貴

Publisher Resources

ISBN: 9784814400638Publisher Website