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

【Python Pandas】groupby()とapply()でローリング平均(移動平均)を求める方法

Pandasでローリング平均(移動平均)を求めるには、apply()関数を使用します。さらにgroupby()と組み合わせることで、カテゴリごとにローリング平均を計算することも可能です。

まずは、必要なライブラリをインポートしましょう。

import pandas as pd

DataFrameの作成

次に、2つのカラムを持つDataFrameを作成します。1つは車種名を表す文字列型の「Car」カラム、もう1つは登録価格を表す整数型の「Reg_Price」カラムです。

dataFrame = pd.DataFrame(
   {
      "Car": ['Tesla', 'Mercedes', 'Tesla', 'Mustang', 'Mercedes', 'Mustang'],
      "Reg_Price": [5000, 1500, 6500, 8000, 9000, 6000]
   }
)

groupby()とapply()でローリング平均を計算する

groupby()で「Car」列を基準にデータをグループ化し、apply()内でrolling().mean()を呼び出すことで、各グループごとのローリング平均を求められます。ここではウィンドウサイズを2に設定しています。

dataFrame.groupby("Car")["Reg_Price"].apply(
   lambda x: x.rolling(center=False, window=2).mean()
)

完全なサンプルコード

以下が、ここまでの手順をまとめたコード例です。

import pandas as pd

# DataFrameを作成
dataFrame = pd.DataFrame(
   {
      "Car": ['Tesla', 'Mercedes', 'Tesla', 'Mustang', 'Mercedes', 'Mustang'],
      "Reg_Price": [5000, 1500, 6500, 8000, 9000, 6000]
   }
)

print("DataFrame...\n", dataFrame)

print("\nRolling Mean...\n",
   dataFrame.groupby("Car")["Reg_Price"].apply(
      lambda x: x.rolling(center=False, window=2).mean()
   )
)

実行結果

上記のコードを実行すると、以下のような出力が得られます。

DataFrame ...
        Car  Reg_Price
0     Tesla       5000
1  Mercedes       1500
2     Tesla       6500
3   Mustang       8000
4  Mercedes       9000
5   Mustang       6000

Rolling Mean...
0       NaN
1       NaN
2    5750.0
3       NaN
4    5250.0
5    7000.0
Name: Reg_Price, dtype: float64

出力結果の解説

ウィンドウサイズが2に設定されているため、各グループの最初の行は平均を計算するためのデータが不足しており、NaNが表示されます。

  • Teslaグループ:(5000 + 6500) ÷ 2 = 5750.0
  • Mercedesグループ:(1500 + 9000) ÷ 2 = 5250.0
  • Mustangグループ:(8000 + 6000) ÷ 2 = 7000.0

このように、groupby()apply()を組み合わせれば、カテゴリ別の時系列データに対して柔軟にローリング平均を計算できます。売上データやセンサーデータなど、グループ単位での移動平均分析にぜひ活用してみてください。

  1. Python Pandas入門:TimedeltaIndex.componentsでタイムデルタの構成要素をDataFrameとして取得する方法

    TimedeltaIndexの各要素を「日・時・分・秒・ミリ秒・マイクロ秒・ナノ秒」といった構成要素(コンポーネント)に分解し、その結果をDataFrameとして取得したい場合は、TimedeltaIndex.componentsプロパティを使用します。 この記事では、実際のコード例とともに、componentsプロパティの使い方と出力結果をわかりやすく解説します。 必要なライブラリのインポート まず、pandasをインポートします。 import pandas as pd TimedeltaIndexオブジェクトの作成 次に、TimedeltaIndexオブジェクトを作成します。dataパラ

  2. PythonでpandasのDataFrameをCSVファイルに書き込む方法【to_csv()の使い方】

    pandasのDataFrameをCSVファイルに出力する基本 PythonでpandasのDataFrameをCSVファイルに書き込むには、to_csv()メソッドを使用します。このメソッドは、DataFrameの内容をそのままCSV形式で保存できる、最もシンプルで一般的な方法です。 まずはサンプルデータとして、リストを値にもつ辞書を作成しましょう。 # リストの辞書を定義 d = {Car: [BMW, Lexus, Audi, Mercedes, Jaguar, Bentley], Date_of_purchase: [2020-10-10, 2020-10-12, 2020-