【pandas】ただgroupByの件数を知りたいだけなのに【.size()】

スポンサーリンク
python Python

Python コード

件数を出力

# a, b, c列でグルーピングした後のレコード件数を表示
df.groupby(["a", "b", "c"]).size()


# このように表示される(一番右列が件数)
# a          b          c
# 1          0          False           38
#            1          False           11
#                       True             3
# 2          0          False            1
# 3          0          False            3
#            1          False            1
#                       True             1
# 6          0          False            1
# 8          0          False           12
#                       True             1
# 12         0          False            1

GroupByした結果の件数はこのように.size()関数を使うと表示されます。

件数をnumpyで取得

# 件数の結果列だけを配列で取得
df.groupby(["a", "b", "c"]).size().values

# array([38, 11,  3,  1,  3,  1,  1,  1, 12,  1,  1])

groupBy.count()で出そうなのに出ない

count()だとこのようにDataFrameの要素がひたすら並んでしまう…

.count()の方で出そうなのに、全部の列の件数が表示されてしまいます。

.size()で出せることを覚えておきましょう。

それでは!

追記:groupbyのこんな仕様知ってた?

知らないとまずいことになる…かも?ということがあったので書きました。

追記:Colabで綺麗に出力する方法

to_frame()関数を使うとDataFrameのように結果を出力することができます!

コメント

タイトルとURLをコピーしました