-
indexが存在しない
pandasでgroupbyしてからgroupbyの要素にアクセスしたい場合は通常のカラムのAPIではできなく、一旦reset_index()する必要があります。しかしpolarsはindexが存在しないためそういった操作が要らない -
マージ処理後は自動でsizeを表示してくれる
マージ処理するたびにsizeを確認したほうが安全なので、polarsは宣言しなくても自動で出してくれて便利 -
APIがpysparkと近い
pandasは並行処理に難があるため、巨大なデータを処理できず基本的にpyspark頼りです。といってもpython自体の並行処理は(ryなので、あくまでもjavaのAPIを呼びだすときにpysparkを使うだけです。pandas書けるならある程度勉強すればpysparkも書けるって言っても、癖が違います。しかしpolarsのAPIはかなりpysparkと近いので、特にこだわる理由がなければpolarsを使ったほうがいいでしょう。polars => pandasの変換はできますし。 -
python以外でも使える
現時点でpolarsはpythonだけでなく、rust、nodejs、rでも実行できるので、応用範囲がpandasより広いです。
いかがでしょうか、早いうちにpolarsに入信したほうがいいですよ(ry
1-
kaggleなど比較的にきれいなデータで分析する場合はあんまり悩まないのですが、実務の場合は汚いデータで任されることはしばしばあります、っていうかほとんどです。
こういった汚いデータを使って分析で結論を出そうと思ってたら、なんかデータおかしいんじゃない?数値合わないんじゃない?なんか予想外のレコードが入ってるんだけどって思ったことありませんか?私にはあります、多分ほぼすべてのデータアナリスト・データエンジニアが通過する道ではないかとも思います。
ここではいくつかのTipsをシェアしたいと思います
- データをロードしたらまずは
.info()
ですべての列の型を確認する - 定義次第で一旦DataFrameに対してdrop_duplicates()
- 全ての列に対して欠損率を確認する
- 全ての文字列に対してmojimojiライブライで正規化する(全角整数を半角に、半角カナを全角に)
- 全ての文字列に対して.
str.strip()
で両側の変なスペースを削除する - 全てのカテゴリ変数に対して
.unique()
で中身を確認する - 全ての数値列に対してhist()で分布を確認する
- mergeなど行数を変換させえるコードは実行するたびに
.size()
で辺に変わってないかを確認する - mergeする際に、コード類の列が存在すれば優先でkeyとして使用すること
以上のTipsを息を吸うように出来たら後でやっぱ違うわってなる頻度は大分減ると思います。最後、多分誰もやりたくないのですが、めっちゃくちゃ汚いデータに対してはロードしたら全ての列をstrに変換してから列の定義を確認してから自分でキャストしたほうが安全かとと思います。
- データをロードしたらまずは