Slide 1

Slide 1 text

© 2024 Wantedly, Inc. プロダクトのコードをPandasから Polarsへ書き換えた話 Polars Data Crunch #2 Jul. 12 2024 - Yudai Hayashi

Slide 2

Slide 2 text

© 2024 Wantedly, Inc. INTERNAL ONLY 自己紹介 林 悠大 ● 経歴: ○ 東京大学工学系研究科でPh.D取得 ○ 2022年にウォンテッドリーにデータ サイエンティストとして新卒入社。 推薦システムの開発を行う ● X: @python_walker ● 趣味: ○ 読書 ○ 音楽聴くこと ○ ウイスキー

Slide 3

Slide 3 text

© 2024 Wantedly, Inc. INTERNAL ONLY 今日話すこと ● 業務で使っているコードにPolarsを使う理由 ● Pandasからの移行の実例 ● プロダクトでPolarsで使うときのツラみ

Slide 4

Slide 4 text

© 2024 Wantedly, Inc. INTERNAL ONLY (機械学習)ジョブでPolarsを使う意味 Polarsを使うことでデータの処理が高速に行えるようになる。そして処理が高速 になると色々な面に対して恩恵がある コスト 開発者体験 ユーザー体験 ● サーバー代は従量 課金制 ● ジョブの実行時間 が短くなれば安く なる ● ユーザーに良いも のを届けるには試 行錯誤が必要 ● 実行時間が短くな ればたくさん実験 できる ● ジョブが遅いとユー ザーが新しいものを 中々受け取れない ● 早く実行を終えられれ ばユーザーが良いもの を早く受け取れる

Slide 5

Slide 5 text

© 2024 Wantedly, Inc. INTERNAL ONLY PandasからPolarsへの置き換え ウォンテッドリーではPandasからPolarsへの置き換えを進めている 置き換えることのメリット ● 処理速度の向上 置き換える際に気にしていたこと ● 置き換えにかかるコスト ● 実際問題としてどれくらい速くなるのか

Slide 6

Slide 6 text

© 2024 Wantedly, Inc. INTERNAL ONLY PandasユーザーにとってのPolarsの移行コスト Pandas、Polars間の変換はとても簡単 (.to_pandas, .from_pandas) ● コードの一部のみをPolarsに置き換 えるということが可能なので導入障 壁が小さい ● Pandasが苦手とする処理だけを Polarsに置き換えても効果が大きい ● Pandas2.x系ならArrow形式どうし の変換にもできるのでパフォーマン ス面でも有利

Slide 7

Slide 7 text

© 2024 Wantedly, Inc. INTERNAL ONLY Apply処理をPolarsで書くことによる高速化 実際にPolarsに置き換えて高速化を実現した例を紹介 元々のコード ● 日付をint型に変換してある基準となる数値(base)との差をとる処理 ● Pandasに用意されているメソッドでは対応しきれず apply を利用

Slide 8

Slide 8 text

© 2024 Wantedly, Inc. INTERNAL ONLY Apply処理をPolarsで書くことによる高速化 ● if 文をPolarsの when 構文を使って表現 ● この書き換えによって、この部分の実行時間を50 min → 1 minに短縮 変更後の コード

Slide 9

Slide 9 text

© 2024 Wantedly, Inc. INTERNAL ONLY Polarsに書き換えたときに躓いた点 ● バージョンアップデートによる破壊的変更が高頻度で生じる ○ 1.0に到達したので今後は減るかも(?) ● Pandasと比較して型について厳密

Slide 10

Slide 10 text

© 2024 Wantedly, Inc. INTERNAL ONLY Polarsに書き換えたときに躓いた点 ● バージョンアップデートによる破壊的変更が高頻度で生じる ○ 1.0に到達したので今後は減るかも(?) ● Pandasと比較して型について厳密 ● 細かなメソッド名などの変更が頻繁 に入る ● 複数のリポジトリでPolarsを使って いると認知負荷になりやすい repoA repoB repoC これはcount こっちはlen こっちは??

Slide 11

Slide 11 text

© 2024 Wantedly, Inc. INTERNAL ONLY Polarsに書き換えたときに躓いた点 ● バージョンアップデートによる破壊的変更が高頻度で生じる ○ 1.0に到達したので今後は減るかも(?) ● Pandasと比較して型について厳密 CSVなどを読み込んで型推論の結果が意図通りにならなかった時に問題に

Slide 12

Slide 12 text

© 2024 Wantedly, Inc. INTERNAL ONLY まとめ ● プロダクトでPolarsを使うことによるメリットと問題になりやすい点を 紹介 ○ パフォーマンス面でPolarsの利点はかなり大きい ○ 型に対して厳密な分躓きやすいなどの注意点もある