PyTorchやPandas高速化の工夫
Pythonの高速化
PyTorch
高速パフォーマンスのヒント(公式サイト)
Pandas
for idx,row in df.iterrows(): は遅くなるという話
pandas.DataFrame のforループをゆるふわ△改良して300倍高速化する
pandasはcsvの読み込みが早いが、処理はnumpyのほうが数十倍早い
read_csv()で読み込んだ後、 values を使って ndarray に変換してから numpy で計算させる方法が一番処理効率がよい
numpyのほうが、同要素の足し算や掛け算等をよしなに数合わせしてくれるためそういう意味でもそっちの方がいい。
しかし、rowを使う方法だと読みやすいため、速度を求められない場面では使えるかも
そのほかのPandas高速化の方法について
遅くないpandasの書き方 - blog
pandas初級者に送りたいTips - Zenn
pandasは裏でnumpyが動作している。numpy配列として一度にたくさん計算するように工夫する
groupby()を用いる
loc(), where(), mask()を上手く使う
pandasには並列化のライブラリが存在する
itaeraplesやzipを使用するようにする
apply()はそのまま使用しない
前提:Dataframeでfor文を回してはいけない
apply()を使って関数適用する
しかしapply()は遅い
そこで、pandarallelライブラリを使用して、importして.applyを.parallel_applyに変える
並列処理をしてくれるようになる
Pandasを見やすく構築する方法としてパイプラインの形で書くことが挙げられる
/PythonOsaka/Pythonチュートリアル:パイプライン処理