この記事では、Pandasのgroupby()関数について、その提供する様々な機能とともに理解していきます。
groupby() 関数って何?
Python Pandasモジュールは、より良いデータの前処理のために広く使用され、データの可視化のために密接に連携しています。
Pandasモジュールには、データをより効率的に処理するための様々な関数が組み込まれています。
Pandasモジュールの dataframe.groupby() 関数 は、あらかじめ定義された条件やオプションに基づいて、データセット全体からデータの一部を分割して分離するために使用されます。
構文は以下の様な感じです。
dataframe.groupby('column-name')
|
上記の構文を使って、データセットを分割し、関数の引数として渡されたカラムに属するすべてのデータを選択することができます。
入力データセット
import pandas
data = pandas.read_csv("C:/marketing_tr.csv")
data_grp = data.groupby('marital')
data_grp.first() |
例えば、以下の様になります。
dataframe.groupby(['column1', 'column2', ...., 'columnN'])
|
上記の例では、groupby() 関数を使用して、列 ‘marital’ に属するすべてのデータを持つ新しいデータフレームをそれぞれ分割して個別に作成しました。
結果は以下の通りです。
import pandas
data = pandas.read_csv("C:/marketing_tr.csv")4
data_grp = data.groupby(['marital','schooling'])
data_grp.first() |
この記事もチェック:Pandasのデータフレームに行を追加する5つの簡単な方法
Pandasのgroupby()関数で複数のカラムを指定する場合
Pandasのdataframe.groupby()関数を使用すると、複数のカラムの値に応じてデータを分割することができます。
このように、複数のカラムタグを引数として渡すことで、それらのカラムの値のみを使用してデータを分割・分離することができます。
構文は以下の様な感じです。
dataframe.groupby('column').groups
|
例えば、以下の様になります。
import pandas
data = pandas.read_csv("C:/marketing_tr.csv")
data_grp = data.groupby('marital').groups
data_grp |
結果は以下の通りです。
{'divorced': Int64Index([ 3, 4, 33, 34, 63, 66, 73, 77, 98, 112,
...
7284, 7298, 7300, 7326, 7349, 7362, 7365, 7375, 7391, 7412],
dtype='int64', length=843),
'married': Int64Index([ 1, 2, 5, 7, 8, 9, 10, 11, 13, 14,
...
7399, 7400, 7403, 7404, 7405, 7406, 7407, 7408, 7410, 7413],
dtype='int64', length=4445),
'single': Int64Index([ 0, 6, 12, 16, 18, 19, 24, 29, 31, 32,
...
7383, 7385, 7386, 7390, 7397, 7398, 7401, 7402, 7409, 7411],
dtype='int64', length=2118),
'unknown': Int64Index([2607, 4770, 4975, 5525, 5599, 5613, 6754, 7221], dtype='int64')}
|
Pandasのgroupby()関数でグループを表示する
特定のカラムの値によってデータを分割する以外に、 dataframe.groupby().groups 関数を使用して、カラムのカテゴリから形成された各グループの詳細を表示することもできます。
この例で使用するサンプルデータセットのスナップショットを以下に示します。
dataframe.get_group('column-value')
|
構文は以下の様な感じです。
import pandas
data = pandas.read_csv("C:/marketing_tr.csv")
data_grp = data.groupby('marital')
df = data_grp.get_group('divorced')
df.head() |
例えば、以下の様になります。

上で見たように、データを分割し、列 – ‘marital’ の値から新しいデータフレームを形成しています。
さらに、groupby().groups 関数を使用して、特定の列に存在する値のすべてのカテゴリを表示しました。
さらに、データ型と存在する値の数とともに、元のデータセットにおけるこれらのカテゴリの位置も示しています。
結果は以下の通りです。

この記事もチェック:Pandasのdataframeでインデックスをカラム(列、行)に変換する方法
Pandasのgroupby()関数を使ってグループを選択する
今まで見てきたように、我々は、カラムに存在するユニークな値の概要の異なるカテゴリを、その詳細とともに表示することができます。
dataframe.get_group(‘column-value’)` を使用すると、groupby() 関数でグループ化されたカラムの特定のカテゴリ/データ値に属する値を表示することができます。
構文は以下の様な感じです。

例えば、以下の様になります。

上記の例では、’marital’列の列値’divorced’に属するデータを表示しています。
結果は以下の通りです。

まとめ
以上、今回はPandasのgroupby()関数の動作を詳しく理解しました。