みなさんこんにちは。
今日は私が知らなくて焦った、pandasの話をしようと思います。
もし私と同じように知らないという人がいたら、被害を受けないように知っておいていただければと思います。
結論
df.groupby("something", dropna=False).size().to_frame()
Groupbyを実行するときに、グルーピング対象の列にあるNanは対象外になります。
この例ではdropna=Falseを入れることでNanの数も含めたカウント数を表示してくれます。
何が問題なのか
例えばこのようにnanがあるsomething列の値毎のカウント数を出したいとする。
![](https://an-engineer-note.com/wp-content/uploads/2022/06/abf46bde39ef1c5fdad40c4a6c3fd29f-323x1024.png)
これに、dropnaを指定しないでgroupbyを行うと、
df.groupby("something").size().to_frame("count")
![](https://an-engineer-note.com/wp-content/uploads/2022/06/29cef21e43dd370db1a9649a750c652e.png)
Nanは無視されます(怖
私は列にNanがあると知らないままカウントしていて、結果Nanの存在に気づかなかったんです。
![](https://an-engineer-note.com/wp-content/uploads/2022/06/ee3d9b29b835c764a1e267f659253e2a.png)
ここで、dropna=Falseを指定すると、Nanもカウントしてくれます。
![](https://an-engineer-note.com/wp-content/uploads/2022/06/05cd795cb8ddb7ad1dddde8bf5f405e3.png)
普通にNanは無いと思って数をクライアントに伝えていたので、やっちまったってことですね。
まとめ
groupbyで値のカウントをするときは、初期値でNanが除外されることを覚えておきましょう。
それでは!
コメント