【Python】.groupbyとは?使い方や引数のオプション、他のメソッドとの違いを具体例豊富に解説!

Pythonでデータ分析や集計処理をする上で、頻繁に使われるのが pandas の groupby() メソッドです。

この記事では .groupby() の基本的な使い方から、活用シーン、他の集計系メソッドとの違いまでわかりやすく解説します。

.groupby() とは?

.groupby() は、データを特定の列(カテゴリ)でグループ分けし、それに対して平均、合計、件数などの統計処理を行うためのメソッドです。

SQLの GROUP BY に似た機能を持ち、集計や傾向分析を行いたいときに非常に便利です。

基本的な使い方(列ごとに平均を求める)

まず列ごとの平均を求める基本的な使い方を確認しましょう!

このコードでやっていることは下記です。

  • 部門 列でグループ化
  • 各部門ごとに 売上 の平均を算出
  • 結果は新しい DataFrame として出力
各部門ごとに売り上げが平均されていますね。

.groupby() 箱のような形で使います。

具体例:複数列で集計(件数・合計など)

このように、sum()count()max()min() などの集計関数を後ろに . でチェーンのように繋げていくのが基本スタイルです。

df.groupby() の主な引数

df.groupby() には多くのオプション引数があり、データの集計方法や出力形式を柔軟に制御できます。

特に as_indexgroup_keys は使い方を誤解しやすいので、具体例とともに解説します。

引数名 役割
by グループ化の基準となる列、リスト、または関数 "部門" または ["部門", "担当者"]
axis グループ化の方向(行=0、列=1) 通常は0
level マルチインデックス時に使う階層の指定 level=0
as_index 結果をインデックスにするか否か as_index=False
sort グループキーをソートするか否か sort=False で並び順維持
group_keys グループ名を結果に含めるかどうか group_keys=False
dropna NAのグループを無視するかどうか(pandas 1.1以降) dropna=False
observed category型に対する最適化(パフォーマンス目的) observed=True

 

具体例:as_index=False を使う

デフォルトではグループキーがインデックスになりますが、as_index=False を指定すると、列として保持されます。

下記の結果となり、 "部門" 列がそのまま残るため、SQLの GROUP BY 結果に近い形式になります。

as_index=Falseを指定しない場合は下記結果となり、部門がインデックスとなります。

活用シーン

groupby() はデータ分析や前処理の中核を担う機能で、あらゆる分野のデータ処理で活用されています。

  • 売上データを支店や担当者ごとに集計
  • ログデータを日付やユーザーごとにグループ化
  • アンケート結果を属性(性別、年齢など)ごとに分析
  • 商品カテゴリ別の販売件数や平均金額の算出

このように、groupby() は単なる集計だけでなく、ビジネスの意思決定やデータサイエンスの基盤を支える重要なメソッドです。

注意点

groupby()はとても便利ですが、下記注意点には留意しておきましょう。

  1. groupby() の戻り値は特殊なオブジェクト(GroupByオブジェクト)なので、そのままでは使えない
  2. 集計関数(mean, sum, count など)を必ず後ろにつけて結果を得る
  3. as_index=False を指定しないと、結果のグループキーがインデックスになってしまう(使いにくいことも)
このように as_index=False を指定すると、元の列として扱いやすくなります。

まとめ

df.groupby() は pandas におけるデータ分析の要ともいえるメソッドです。

  • df.groupby() は、列ごとにデータをグループ分けして集計処理を行うための基本メソッド
  • 集計関数(mean, sum, count など)と組み合わせて使う
  • 複数列でのグループ化や、インデックス制御も可能
  • データ分析や前処理、ダッシュボード構築にも頻出
  • pivot_table() など他の集計メソッドとの違いも理解して使い分けよう

df.groupby() を使いこなせると、データ分析の幅が大きく広がります。

数値の要約や傾向の可視化、さらにはモデル入力用の特徴量設計にも応用できるので、ぜひ手を動かしながら習得してみましょう。

おすすめの記事