こんにちは,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 |
# パッケージ読み込み import pandas as pd import numpy as np # データフレームの表示行数を指定 pd.set_option('display.max_rows', 5) # クラス,性別,身長のデータフレーム df = pd.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() |
引数as_index=Falseと設定すると,インデックスをデータフレームの列にすることが出来ます.
1 2 |
# 参考:classでグルーピングしてheightの平均を算出(as_index=False) df.groupby("class", as_index=False).mean() |
1.集約メソッド
先程の例では,グルーピングして平均しました.
平均以外にも総和や最大値など様々な処理をすることができます.
これらの様々な処理をするためのメソッドを集約メソッドと言います.
こちらに使用頻度の高い集約メソッドをまとめました.
1 2 |
# classでグルーピングしてheightの標準偏差を算出 df.groupby("class").std() |
複数列でグルーピングすることもできます.
1 2 |
# class, genderでグルーピングしてheightの平均を算出 df.groupby(["class", "gender"]).mean() |
2.便利メソッド
groupbyをしてグルーピングした後に使用できるメソッドとして,集約メソッド以外にも様々な便利メソッドがありますので,いくつか紹介します.
①get_group
get_groupを使用すると,グルーピングしたデータフレームを取得することができます.
1 2 |
# グルーピングしたデータフレームを取得 df.groupby("class").get_group("a") |
②describe
describeでグルーピングしたデータフレームに対し,基本統計量を算出します.
1 2 |
# 基本統計量の算出 df.groupby("class").describe() |
まとめ
今回はグルーピングについて学習しました.
グルーピングをするにはgroupbyを使用します.
groupbyをした後にする処理のうち,1番よくする処理は集約メソッドによる集計処理です.
また集約メソッド以外にも様々な便利メソッドが用意されています.
それでは,お疲れさまでした!!
次回
-
【pandas】sort_values:ソート【データフレーム処理】
こんにちは,shun(@datasciencemore)です!! 今回はsort_valuesについて学習していきます. sort_valuesは,ソートをするメソッドです. ソートというのは,データ ...
続きを見る