Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
プロダクトのコードをPandasからPolarsへ書き換えた話
Search
Yudai Hayashi
July 12, 2024
8
4.2k
プロダクトのコードをPandasからPolarsへ書き換えた話
Polars Data Crunch #2での発表スライド
Yudai Hayashi
July 12, 2024
Tweet
Share
More Decks by Yudai Hayashi
See All by Yudai Hayashi
Off-Policy Evaluation and Learning for Matching Markets
yudai00
0
58
ジョブマッチングプラットフォームにおける推薦アルゴリズムの活用事例
yudai00
0
71
ユーザーのプロフィールデータを活用した推薦精度向上の取り組み
yudai00
0
650
MCP Clientを活用するための設計と実装上の工夫
yudai00
1
1.2k
人とシゴトのマッチングを実現するための機械学習技術
yudai00
1
67
MCPを理解する
yudai00
17
12k
データバリデーションによるFeature Storeデータ品質の担保
yudai00
1
220
「仮説行動」で学んだ、仮説を深め ていくための方法
yudai00
8
2k
相互推薦システムでのPseudo Label を活用したマッチ予測精度向上の取り組み
yudai00
1
990
Featured
See All Featured
Raft: Consensus for Rubyists
vanstee
141
7.2k
Being A Developer After 40
akosma
91
590k
Typedesign – Prime Four
hannesfritz
42
2.9k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.6k
Leading Effective Engineering Teams in the AI Era
addyosmani
8
1.3k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.6k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.8k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.3k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
Transcript
© 2024 Wantedly, Inc. プロダクトのコードをPandasから Polarsへ書き換えた話 Polars Data Crunch #2
Jul. 12 2024 - Yudai Hayashi
© 2024 Wantedly, Inc. INTERNAL ONLY 自己紹介 林 悠大 • 経歴:
◦ 東京大学工学系研究科でPh.D取得 ◦ 2022年にウォンテッドリーにデータ サイエンティストとして新卒入社。 推薦システムの開発を行う • X: @python_walker • 趣味: ◦ 読書 ◦ 音楽聴くこと ◦ ウイスキー
© 2024 Wantedly, Inc. INTERNAL ONLY 今日話すこと • 業務で使っているコードにPolarsを使う理由 •
Pandasからの移行の実例 • プロダクトでPolarsで使うときのツラみ
© 2024 Wantedly, Inc. INTERNAL ONLY (機械学習)ジョブでPolarsを使う意味 Polarsを使うことでデータの処理が高速に行えるようになる。そして処理が高速 になると色々な面に対して恩恵がある コスト
開発者体験 ユーザー体験 • サーバー代は従量 課金制 • ジョブの実行時間 が短くなれば安く なる • ユーザーに良いも のを届けるには試 行錯誤が必要 • 実行時間が短くな ればたくさん実験 できる • ジョブが遅いとユー ザーが新しいものを 中々受け取れない • 早く実行を終えられれ ばユーザーが良いもの を早く受け取れる
© 2024 Wantedly, Inc. INTERNAL ONLY PandasからPolarsへの置き換え ウォンテッドリーではPandasからPolarsへの置き換えを進めている 置き換えることのメリット •
処理速度の向上 置き換える際に気にしていたこと • 置き換えにかかるコスト • 実際問題としてどれくらい速くなるのか
© 2024 Wantedly, Inc. INTERNAL ONLY PandasユーザーにとってのPolarsの移行コスト Pandas、Polars間の変換はとても簡単 (.to_pandas, .from_pandas)
• コードの一部のみをPolarsに置き換 えるということが可能なので導入障 壁が小さい • Pandasが苦手とする処理だけを Polarsに置き換えても効果が大きい • Pandas2.x系ならArrow形式どうし の変換にもできるのでパフォーマン ス面でも有利
© 2024 Wantedly, Inc. INTERNAL ONLY Apply処理をPolarsで書くことによる高速化 実際にPolarsに置き換えて高速化を実現した例を紹介 元々のコード •
日付をint型に変換してある基準となる数値(base)との差をとる処理 • Pandasに用意されているメソッドでは対応しきれず apply を利用
© 2024 Wantedly, Inc. INTERNAL ONLY Apply処理をPolarsで書くことによる高速化 • if 文をPolarsの
when 構文を使って表現 • この書き換えによって、この部分の実行時間を50 min → 1 minに短縮 変更後の コード
© 2024 Wantedly, Inc. INTERNAL ONLY Polarsに書き換えたときに躓いた点 • バージョンアップデートによる破壊的変更が高頻度で生じる ◦
1.0に到達したので今後は減るかも(?) • Pandasと比較して型について厳密
© 2024 Wantedly, Inc. INTERNAL ONLY Polarsに書き換えたときに躓いた点 • バージョンアップデートによる破壊的変更が高頻度で生じる ◦
1.0に到達したので今後は減るかも(?) • Pandasと比較して型について厳密 • 細かなメソッド名などの変更が頻繁 に入る • 複数のリポジトリでPolarsを使って いると認知負荷になりやすい repoA repoB repoC これはcount こっちはlen こっちは??
© 2024 Wantedly, Inc. INTERNAL ONLY Polarsに書き換えたときに躓いた点 • バージョンアップデートによる破壊的変更が高頻度で生じる ◦
1.0に到達したので今後は減るかも(?) • Pandasと比較して型について厳密 CSVなどを読み込んで型推論の結果が意図通りにならなかった時に問題に
© 2024 Wantedly, Inc. INTERNAL ONLY まとめ • プロダクトでPolarsを使うことによるメリットと問題になりやすい点を 紹介
◦ パフォーマンス面でPolarsの利点はかなり大きい ◦ 型に対して厳密な分躓きやすいなどの注意点もある