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

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

by Jake VanderPlas, 菊池 彰
May 2018
Intermediate to advanced
556 pages
13h 21m
Japanese
O'Reilly Japan, Inc.
Content preview from Pythonデータサイエンスハンドブック ―Jupyter、NumPy、pandas、Matplotlib、scikit-learnを使ったデータ分析、機械学習
3.13
 ハイパフォーマンス
pandas
eval()
query()
211
言い換えると、中間結果がすべて明示的にメモリに割り当てられることになります。
x
y
の配
列が非常に大きい場合、メモリの使用量と計算上のオーバーヘッドは大きくなる可能性がありま
す。
Numexpr
ライブラリは中間結果の割り当てを行わずに、この種の複合表現要素を要素ごとに
計算する機能を提供します。
Numexpr
のドキュメント(
https://github.com/pydata/numexpr
)には詳しく説明されていますが、
ここでは文字列表現した
NumPy
式を
Numexpr
が受け付ける、ということを理解しておけば十分で
1
In[5]: import numexpr
mask_numexpr = numexpr.evaluate('(x > 0.5) & (y < 0.5)')
np.allclose(
mask, mask_numexpr)
Out[5]: True
Numexpr
の利点は、中間結果を保存する一時配列を使用しない方法でこの式を評価するため、
(特に大規模配列の場合)
NumPy
よりもはるかに効率的に実行される点です。この後説明する
pandas
eval()
query()
機能は概念的には類似しており、
Numexpr
ライブラリを使用していま
す。
3.13.2
pandas.eval()
による効率的実行
pandas
eval()
関数は文字列として与えた
DataFrame
の操作を効率的に実行します。例えば、
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データサイエンスハンドブック 第2版 ―Jupyter、NumPy、pandas、Matplotlib、scikit-learnを使ったデータ分析、機械学習

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

Jake VanderPlas, 菊池 彰
初めてのGraphQL ―Webサービスを作って学ぶ新世代API

初めてのGraphQL ―Webサービスを作って学ぶ新世代API

Eve Porcello, Alex Banks, 尾崎 沙耶, あんどうやすし

Publisher Resources

ISBN: 9784873118413Other