Slide 1

Slide 1 text

PolarsとPanderaで実現する 高速でロバストなデータ処理 みんなのPython勉強会 #102 Mar. 28 2024 - Chiaki Ichimura © 2024 Wantedly, Inc.

Slide 2

Slide 2 text

自己紹介 市村千晃 ● 経歴 ○ SE, PM, DS@SIer(2017/4 ~ 2024/2) ○ DS@ウォンテッドリー株式会社(2024/3~) ● 興味 ○ データ分析・機械学習 ○ 推薦システム © 2024 Wantedly, Inc. @chimuichimu1

Slide 3

Slide 3 text

データ分析・機械学習のフロー © 2024 Wantedly, Inc. データ処理 データ準備 分析 価値提供 評価

Slide 4

Slide 4 text

データ分析・機械学習のフロー © 2024 Wantedly, Inc. データ処理 データ準備 分析 価値提供 評価

Slide 5

Slide 5 text

データ処理における課題 ● 実行時間 ○ 処理に時間がかかり、分析のサイクルを回すボトルネックに ● データ品質 ○ 想定外のデータや意図しない処理が、誤った分析やモデルの性能劣 化につながる ● 可読性 ○ データの内容をコードから読み取るのが難しく、処理がブラックボック ス化しがち © 2024 Wantedly, Inc.

Slide 6

Slide 6 text

やりたいこと データ処理を 高速かつロバストに実行したい © 2024 Wantedly, Inc.

Slide 7

Slide 7 text

やりたいこと データ処理を 高速かつロバストに実行したい © 2024 Wantedly, Inc. Polars Pandera

Slide 8

Slide 8 text

Polarsとは? ● Rustで実装されたテーブルデータ処理用のライブラリ ● 並列処理や遅延評価の仕組みにより高速なデータ処理を実現 © 2024 Wantedly, Inc. https://github.com/pola-rs/polars

Slide 9

Slide 9 text

Polarsってどれくらい早いの? © 2024 Wantedly, Inc. https://pola.rs/posts/benchmarks/

Slide 10

Slide 10 text

Polarsってどれくらい早いの? © 2024 Wantedly, Inc. https://pola.rs/posts/benchmarks/ Pandasが21秒かかる処理(※)を Polarsは1秒未満で実行 ※ファイル読み込み -> 結合 -> フィルタ -> 演算 -> 集約 -> ソート

Slide 11

Slide 11 text

Panderaとは? ● テーブルデータに対するバリデーション機能を提供するライブラリ ● 2024/3のリリースでPolarsのサポートを開始(注:現時点ではベータ版) © 2024 Wantedly, Inc. https://pandera--1373.org.readthedocs.build/en/1373/polars.html#polars

Slide 12

Slide 12 text

Panderaとは? © 2024 Wantedly, Inc. データが満たすべき性質を スキーマとしてコードに定義 (型、最大値、最小値、非null…) データがスキーマを満たすかを チェック 基本的な使い方 https://pandera--1373.org.readthedocs.build/en/1373/polars.html#polars

Slide 13

Slide 13 text

Panderaを使うメリット © 2024 Wantedly, Inc. 不正な値が入力されると エラーが発生 データ品質の担保 SchemaError: Column 'price' failed validator number 0: failure cases: shape: (1, 1) 想定外のデータや 意図しない処理に気づける🙆

Slide 14

Slide 14 text

Panderaを使うメリット © 2024 Wantedly, Inc. 可読性の向上 どんなデータが入出力されるか?を コードから読み取れる🙆 データが満たすべき性質を スキーマとしてコードに定義

Slide 15

Slide 15 text

データ処理における課題 まとめ © 2024 Wantedly, Inc. 実行時間 データ品質 可読性 Polarsによる データ処理 高速かつロバストなデータ処理を実現 Panderaによる スキーマ定義とバリデーション