はじめに
pandasはPythonのデータ分析ライブラリであり、データの集計・加工・分析を行うのに非常に便利な機能が備わっています。その中でも、groupby操作はよく使われる機能の一つです。groupby操作を使うことで、データを複数のキーでグループ化し、集計や統計処理を行うことができます。
今回は、pandasのgroupby操作について、複数列を使った操作にフォーカスして解説していきます。
pandas groupbyの基本概念と複数列を使った操作のメリット
groupby操作は、データフレームをグループ化して集計するための機能です。groupbyを使うことで、以下のような処理を簡単に行うことができます。
- データの集計
- データの集約
- データのフィルタリング
groupby操作を複数列で行うことで、より細かいグルーピングができるようになります。たとえば、性別と年齢を複数のキーとして指定することで、より細かい集計が可能になります。
複数列でのgroupby操作の基本構文
pandasのgroupby操作は、以下のような構文になっています。
df.groupby([キー1, キー2, ...]).集計関数()
ここで、キー1、キー2、…はグルーピングのキーとなる列名であり、集計関数には、count、sum、mean、median、max、min、std、var、first、last、nth、size、agg、apply、transformなどがあります。
たとえば、以下のようなデータフレームがあったとします。
import pandas as pd data = { 'gender': ['male', 'male', 'female', 'female', 'male'], 'age': [25, 35, 20, 30, 25], 'height': [170, 180, 165, 155, 175], 'weight': [65, 80, 50, 55, 70] } df = pd.DataFrame(data) print(df)
この場合、genderとageをグルーピングして、heightとweightの平均値を求めるには、以下のようなコードになります。
df.groupby(['gender', 'age'])[['height', 'weight']].mean()
このコードでは、genderとageをグルーピングのキーとして指定し、heightとweightの平均値を求めています。ここで、[[‘height’, ‘weight’]]という形式で、平均値を求めたい列を指定しています。
複数列でのgroupby操作を使った集計方法
複数列でのgroupby操作を使った集計方法には、以下のようなものがあります。
1. 合計値の計算
複数列での合計値の計算には、sum()メソッドを使います。
df.groupby(['gender', 'age'])[['height', 'weight']].sum()
2. 平均値の計算
複数列での平均値の計算には、mean()メソッドを使います。
df.groupby(['gender', 'age'])[['height', 'weight']].mean()
3. 最大値の計算
複数列での最大値の計算には、max()メソッドを使います。
df.groupby(['gender', 'age'])[['height', 'weight']].max()
4. 最小値の計算
複数列での最小値の計算には、min()メソッドを使います。
df.groupby(['gender', 'age'])[['height', 'weight']].min()
実践例: 複数列を使ったgroupby操作でのデータ解析
ここでは、複数列を使ったgroupby操作を使ったデータ解析の実践例を紹介します。
例えば、以下のようなデータがあったとします。
import pandas as pd data = { 'country': ['USA', 'USA', 'USA', 'Japan', 'Japan', 'Japan'], 'year': [2019, 2020, 2021, 2019, 2020, 2021], 'sales': [100, 200, 150, 50, 80, 70] } df = pd.DataFrame(data) print(df)
この場合、countryとyearをグルーピングのキーとして、salesの合計値を求めるには、以下のようなコードになります。
df.groupby(['country', 'year'])['sales'].sum()
また、country別のyearごとの平均売上高を求めるには、以下のようなコードになります。
df.groupby(['country', 'year'])['sales'].mean()
groupby操作を使うことで、複数のキーでグループ化したデータを簡単に集計することができます。
まとめ
今回は、pandasのgroupby操作について、複数列を使った操作について解説しました。
複数列でのgroupby操作を使うことで、より細かいグルーピングができるようになります。また、groupby操作を使うことで、データを集計やフィルタリングすることができます。
以上が、pandasで複数列を使ったgroupby操作の基本的な使い方となります。