Python
 Computer >> コンピューター >  >> プログラミング >> Python

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']のように指定することで、特定の階層のみを対象とした柔軟な集計が可能です。

この手法を使えば、階層化されたデータでも直感的かつ効率的にグループ集計を行うことができます。

  1. Pandasデータフレームを日付ごとに集計してプロットする方法

    Pandasデータフレームを日付ごとに集計してグラフ化したい場合、groupby()とagg()を組み合わせることで簡単に実現できます。本記事では、Matplotlibを使って集計結果を棒グラフとして可視化するまでの具体的な手順を、サンプルコード付きで解説します。 手順 図のサイズを設定し、サブプロット間およびその周囲のパディング(余白)を調整します。 2次元で、サイズ変更可能、かつ異なるデータ型を含みうる表形式データを持つデータフレーム df を作成します。 groupby() と agg([sum]) を使って、日付ごとに値を集計したデータフレームを取得します。 kind=bar を指定

  2. 【Python】Pandas DataFrameからサブセット(列の一部)を選択する方法

    Pandas DataFrameのサブセット選択とは? Pandasでは、DataFrameから必要な列や行だけを取り出す操作を「サブセットの選択」と呼びます。大きなデータセットから目的のデータだけを抽出できれば、分析や前処理の効率が大幅に向上します。 この記事では、CSVファイルを読み込んだDataFrameから、1つの列、および複数の列を選択する基本的な方法を解説します。 使用するCSVファイルの内容 今回使用する「SalesData.csv」は、Microsoft Excelで開くと以下のような内容になっています。 CSVファイルからDataFrameを作成する まず、pd.rea