こんにちは,shun(@datasciencemore)です!!
今回はgroupbyについて学習していきます.
groupbyは,グルーピングをするメソッドです.
グルーピングというのは,データを特定のカテゴリでまとめることを表しています.
例えば,こんな感じの例を考えてみましょう.
このデータフレームは,とある高校の1学年あたりの情報を示したものです.
データフレームには,クラス(class),性別(gender),身長(heigit)の情報があります.
それでは,クラスごとに生徒の身長の平均を求めたい場合はどうすればいいでしょうか?
こんな感じの処理を考えればできそうですね.
①クラスごとにデータフレームを分割する.
②分割したデータフレームごとに身長を平均する.
これらの処理を実現するためのメソッドがgroupbyとmeanです.
こんな感じで何かしらのカテゴリでグルーピングして,それぞれのカテゴリについて傾向を把握することはとても重要です.
0.準備
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# パッケージ読み込み import numpy as np import polars as pl import seaborn as sns # データフレームの表示行数を指定 pl.Config.set_tbl_rows(6) # クラス,性別,身長のデータフレーム df = pl.DataFrame( { "class":["a", "b", "c", "c", "a", "c", "b", "a", "c", "b", "a"], "gender":["M", "F", "F", "M", "F", "M", "M", "F", "M", "M", "F"], "height":[162, 150, 168, 173, 162, 198, 182, 154, 175, 160, 172] } ) |
1 2 |
# classでグルーピングしてheightの平均を算出 df.groupby("class").mean() |
1 2 |
# classでグルーピングしてheightの平均を算出(classでソート) df.groupby("class").mean().sort("class") |
1.集約メソッド
先程の例では,グルーピングして平均しました.
平均以外にも総和や最大値など様々な処理をすることができます.
これらの様々な処理をするためのメソッドを集約メソッドと言います.
こちらに使用頻度の高い集約メソッドをまとめました.
1 2 |
# classでグルーピングしてheightの最大値を算出 df.groupby("class").max().sort("class") |
複数列でグルーピングすることもできます.
1 2 |
# class, genderでグルーピングしてheightの平均を算出 df.groupby(["class", "gender"]).mean().sort(["class", "gender"]) |
まとめ
今回はグルーピングについて学習しました.
グルーピングをするにはgroupbyを使用します.
groupbyをした後にする処理のうち,1番よくする処理は集約メソッドによる集計処理です.
それでは,お疲れさまでした!!