Upgrade to Pro — share decks privately, control downloads, hide ads and more …

polarsの日本向けpluginを作ってる話(Polars Data Crunch #4)

polarsの日本向けpluginを作ってる話(Polars Data Crunch #4)

Avatar for jinta

jinta

May 10, 2025
Tweet

More Decks by jinta

Other Decks in Programming

Transcript

  1. つかいかた 1. インストール: pip install polars-japanese 2. インポート: import polars_japanese

    3. つかう: ja アクセサを使用 ◦ df.select(pl.col(“出生日”).ja.to_datetime()) ◦ df.ja.to_csv("output.csv", encoding="shift_jis")
  2. 機能① 全角・半角変換 - to_half_width(), to_full_width() - Rustのmojimoji-rsをwrapしている - normalize() -

    polars.str.normalizeによるNFKC正規化に加えて、jaconvでやってる処理を 行う
  3. 機能② 和暦変換 - to_datetime(format='%-K%-y年%m月%d日', raise_error=True) - to_wareki(format='%-K%-Y年%m月%d日', raise_error=True) - japaneraをwrapしたもの

    - formatなどはjapaneraに準拠(というか内部的にはjapanera呼び出してい るだけなのでそのまま引数として渡している) - %-K で和暦(昭和、令和)、%-E でローマ字の和暦(Showa, Reiwa) - 存在しない和暦が指定されている場合にエラーを吐くか欠損にするかを raise_errorで指定
  4. 機能③ 漢数字変換、④ 祝日判定 - to_kanji(config=None) - to_number() - kanjizeをwrapしたもの -

    漢字表記の仕方はkanjizeのconfigに準拠(内部的にkanjize呼び出している だけなのでそのまま引数として渡している) - 二〇〇〇/二千/2千、〇/零など - is_holiday() - is_business_day() - jpholidayをwrapしたもの
  5. 技術的な背景1: namespace - register_expr_namespace, register_dataframe_namespace - method(arg: Expr) -> Expr

    を登録するようなイメージ - 多くは既存ライブラリをwrapしてmap_elements使っているだけ
  6. 技術的な背景3: おまけ - vibe coding - gemini2.5やGPT4oなどを使っていたが、pandasと間違える類のエラーは何一つ起きず - ただ、version古いコードを書いたり、map_elements使いすぎだったり -

    また、maturinまわりの処理はかなり不得意っぽかったので自分で書いた - CIやDocsなどは非常に助かった - maturin - Rustも含むpython libraryのbuildはこれを使うのが主流っぽい - cookiecutter - この前polars-plugin用のものがあるのを見つけた - コメント - あえて日本語で書くよう統一
  7. 参考になったページ - [Polars plugins tutorial](https://marcogorelli.github.io/polars-plugins-tutorial/) - [Plugins - Polars user

    guide](https://docs.pola.rs/user-guide/plugins/) - [Polars Expression Plugins](https://zenn.dev/uchiiii/articles/2466719bfe2ec5) - [polarsのudfとかpluginとか触ってみた - Speaker Deck](https://speakerdeck.com/t88/polarsnoudftokaplugintokahong-tutemita)
  8. これからやりたいこと - 日本語に関する処理 - 形態素解析、曜日の日本語表記など - 日時系の処理 - JSTへの変換など -

    都道府県・市区町村に関する処理 - 地方公共団体コード変換、地方への置換など - 地図に関する処理 - ジオコーディング、地図描写など - polarsでの地理データの扱いがもう少しメジャーになってから…? などなど 近日公開!
  9. おねがい 1. こんな機能も欲しい、使ってみてのFBなど、ご意見お待ちしております - 今日のアンケートへの回答で - polars-jaのdiscordで - あるいはGitHubのissueなどでも 2.

    もし興味ある人いれば、ぜひ一緒に開発しましょう! - 開発経験などは不問です!わたしも素人なので、固いルールは一切ないです - 一緒に試行錯誤してくれる人を募集します - polars-jaのdiscordで声かけてください