Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
プロダクトのコードをPandasからPolarsへ書き換えた話
Search
Yudai Hayashi
July 12, 2024
8
2.9k
プロダクトのコードをPandasからPolarsへ書き換えた話
Polars Data Crunch #2での発表スライド
Yudai Hayashi
July 12, 2024
Tweet
Share
More Decks by Yudai Hayashi
See All by Yudai Hayashi
RustとPyTorchで作る推論サーバー
yudai00
11
6.6k
BigQueryで作る簡単なFeature Store
yudai00
2
280
データサイエンティストになって得た学び
yudai00
1
180
社内での継続的な機械学習勉強会の開催のコツ
yudai00
2
700
会社訪問アプリ「Wantedly Visit」における新規ユーザーの行動量に基づいた推薦方策の選択
yudai00
0
1.5k
Polarsを活用した機械学習ジョブの高速化
yudai00
1
260
Voyagerを利用した宿画像の最近傍探索による候補生成
yudai00
1
210
推薦データ分析コンペに参加して得た知見
yudai00
2
420
論文紹介:Unbiased Delayed Feedback Label Correction for Conversion Rate Prediction
yudai00
0
320
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
5
440
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Thoughts on Productivity
jonyablonski
67
4.4k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
95
17k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
365
25k
StorybookのUI Testing Handbookを読んだ
zakiyama
27
5.3k
Making Projects Easy
brettharned
116
5.9k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
45
2.2k
Testing 201, or: Great Expectations
jmmastey
40
7.1k
[RailsConf 2023] Rails as a piece of cake
palkan
53
5k
The Invisible Side of Design
smashingmag
298
50k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
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の利点はかなり大きい ◦ 型に対して厳密な分躓きやすいなどの注意点もある