Pandas は最も人気のあるライブラリの 1 つです。そのパフォーマンスをより簡単に高速化する方法を探していたときに、FireDucks を発見し、興味を持ちました。
Pandas プログラムは、その記述方法によっては、重大なパフォーマンスの問題が発生する可能性があります。ただし、データ サイエンティストである私は、コードのパフォーマンスを向上させることよりも、データの分析にもっと多くの時間を費やしたいと考えています。そこで、処理の順序を入れ替えたり、プログラムのパフォーマンスを自動的に高速化することができれば素晴らしいと思います。例えば、工程A ⇒ 工程B では遅くなるので、工程B ⇒ 工程A と置き換えます。 (もちろん結果は同じであることが保証されます) データサイエンティストの費用は約45%と言われています。データの準備に時間を費やしていたので、プロセスを高速化するために何かをしようと考えていたときに、FireDucks というモジュールを見つけました。
FireDucks のドキュメントによると、FireDucks は Linux プラットフォームのみでサポートされているようです。メインマシンが Windows なので、Windows 上で Linux を実行できる環境である WSL2 (Windows Subsystem for Linux) から試してみたいと思います。
試した環境は以下の通りです。
WSL は、次の Microsoft ドキュメントを利用してインストールされました。 Linux ディストリビューションは Ubuntu 22.04.1 LTS です。
それでは実際にFireDucksをインストールしてみます。ただし、インストールは非常に簡単です。
pip インストール fireduck
FireDucks (pyarrow、pandas、その他のライブラリとともに) をインストールするには数分かかります。
以下のコードを実行してみました。読み込み速度は非常に速く、パンダは 4 秒かかりましたが、fireDucks は 74.5 ナノ秒しかかかりませんでした。
# 1. analysis based on time period and creative duration # convert timestamp to date/time object df['timestamp_converted'] = pd.to_datetime(df['timestamp'], unit='s ') # define time period def get_part_of_day(hour): if 5これらすべてのデータの前処理と分析には、パンダでは約 8 秒かかりましたが、FireDucks を使用すると 4 秒以内に完了できました。ほぼ 2 倍の高速化が達成できました。
パフォーマンスの向上
パンダの使用で最もストレスがかかることの 1 つは、大規模なデータセットをロードするときに待機することであり、その後、groupby のような複雑な操作を待たなければなりません。一方、FireDucks は遅延評価を行うため、ロード自体に時間がかからず、必要なところに処理が行われ、トータルの待ち時間が大幅に短縮され、非常に有意義だと感じました。
その他の性能としては、団体が公式発表しているようにパンダと比較して最大16倍の高速化を達成しているようです。 (次回は競合ライブラリとのパフォーマンスを比較してみます。)学習コストゼロ
何も考えずにパンダの記法に正確に従うことができることは、大きな利点です。 FireDucks 以外にもデータ フレーム アクセラレーション ライブラリはありますが、学習するには高価すぎ、忘れがちです。
たとえば、極座標を含む列を追加したい場合は、次のように記述する必要があります。
#パンダ df["new_col"] = df["A"] 1 # 極地 df = df.with_columns((pl.col("A") 1).alias("new_col"))
# pandas df["new_col"] = df["A"] 1 # polars df = df.with_columns((pl.col("A") 1).alias("new_col"))既存のコードを変更する必要はほとんどありませんパンダを使用する ETL やその他のプロジェクトがいくつかありますが、インポート ステートメントをインストールして FireDucks に置き換えるだけでパフォーマンスが向上すると嬉しいです。
さらに追加したい場合は、お気軽に以下にコメントしてください。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3