以下の内容はhttps://anton0825.hatenablog.com/entry/2017/11/18/000000より取得しました。


Pandasで最頻値を計算する処理は非常に重い

以下のように、移動平均などを計算しようとしたらすごく時間がかかっていたので速くしようとした時の話。

    agg = sales[SALES_COUNT].astype("float32").shift(shift).rolling(window) \
        .agg(["mean", "max", "min", "std", lambda x: x.mode()[0]]) \
        .reset_index().set_index("seq_idx")
#2.3秒かかった

↑を↓のように書き換え、最頻値を計算しないようにしたら150倍ぐらい速くなった(!)

    agg = sales[SALES_COUNT].astype("float32").shift(shift).rolling(window) \
        .agg(["mean", "max", "min", "std"]) \
        .reset_index().set_index("seq_idx")
#0.015秒かかった

カスタム関数を使うと遅くなると言うが、ここまで違うとは。。 最頻値が必要な場合はDataFrameからndarrayを取り出してnumpyで処理した方が良いかも。




以上の内容はhttps://anton0825.hatenablog.com/entry/2017/11/18/000000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14