PandasのマルチインデックスDataFrameでgroupbyを実行する方法
マルチインデックスDataFrameとは、複数のインデックス(階層的なインデックス)を持つデータフレームのことです。本記事では、マルチインデックス化されたDataFrameに対してgroupbyを使用し、特定のレベルごとに集計を行う方法を解説します。
サンプルデータの準備
まず、デスクトップに保存された以下のようなCSVファイル(sales.csv)を用意します。車種(Car)、地域(Place)、販売台数(UnitsSold)のデータが含まれています。
最初に、pandasライブラリをインポートし、CSVファイルを読み込みます。
import pandas as pd
df = pd.read_csv("C:/Users/amit_/Desktop/sales.csv")
print(df)マルチインデックスの作成
次に、DataFrameの「Car」列と「Place」列をインデックスとして設定します。set_index()メソッドに列名のリストを渡すことで、階層的なインデックスを持つマルチインデックスDataFrameを作成できます。
df = df.set_index(['Car', 'Place'])
これで、「Car」と「Place」の2つの列がインデックスとなったマルチインデックスDataFrameが完成しました。
groupbyによる集計
マルチインデックスDataFrameに対してgroupbyを使用するには、levelパラメータでグループ化の基準となるインデックスレベルを指定します。ここでは「Car」レベルでグループ化し、「UnitsSold」列の平均値を算出します。
res = df.groupby(level=['Car'])['UnitsSold'].mean() print(res)
完全なコード例
以下に、これまでの手順をまとめた完全なコードを示します。
import pandas as pd
df = pd.read_csv("C:/Users/amit_/Desktop/sales.csv")
print(df)
# Car列とPlace列をDataFrameのインデックスとして設定
df = df.set_index(['Car', 'Place'])
# インデックスのソート
df.sort_index()
# マルチインデックスDataFrameへのgroupby適用
res = df.groupby(level=['Car'])['UnitsSold'].mean()
print(res)実行結果
上記のコードを実行すると、以下の出力が得られます。
Car Place Sold 0 BMW Delhi 95 1 Mercedes Hyderabad 80 2 Lamborgini Chandigarh 80 3 Audi Bangalore 75 4 Mercedes Hyderabad 90 5 Porsche Mumbai 90 6 RollsRoyce Mumbai 95 7 BMW Delhi 50 Car Audi 75.8 BMW 72.5 Lamborgini 80.0 Mercedes 85.0 Porsche 90.0 RollsRoyce 95.0 Name: UnitsSold, dtype: float64
ポイントのまとめ
set_index()に列名のリストを渡すことで、簡単にマルチインデックスDataFrameを作成できます。- マルチインデックスDataFrameでの
groupbyでは、levelパラメータにインデックス名またはレベル番号を指定します。 level=['Car']のように指定することで、特定の階層のみを対象とした柔軟な集計が可能です。
この手法を使えば、階層化されたデータでも直感的かつ効率的にグループ集計を行うことができます。
-
Pandasデータフレームを日付ごとに集計してプロットする方法
Pandasデータフレームを日付ごとに集計してグラフ化したい場合、groupby()とagg()を組み合わせることで簡単に実現できます。本記事では、Matplotlibを使って集計結果を棒グラフとして可視化するまでの具体的な手順を、サンプルコード付きで解説します。 手順 図のサイズを設定し、サブプロット間およびその周囲のパディング(余白)を調整します。 2次元で、サイズ変更可能、かつ異なるデータ型を含みうる表形式データを持つデータフレーム df を作成します。 groupby() と agg([sum]) を使って、日付ごとに値を集計したデータフレームを取得します。 kind=bar を指定
-
【Python】Pandas DataFrameからサブセット(列の一部)を選択する方法
Pandas DataFrameのサブセット選択とは? Pandasでは、DataFrameから必要な列や行だけを取り出す操作を「サブセットの選択」と呼びます。大きなデータセットから目的のデータだけを抽出できれば、分析や前処理の効率が大幅に向上します。 この記事では、CSVファイルを読み込んだDataFrameから、1つの列、および複数の列を選択する基本的な方法を解説します。 使用するCSVファイルの内容 今回使用する「SalesData.csv」は、Microsoft Excelで開くと以下のような内容になっています。 CSVファイルからDataFrameを作成する まず、pd.rea