Rolling Maxの基本的な使い方
Pandasのrolling
メソッドとmax
メソッドを組み合わせることで、データの移動窓内での最大値を計算することができます。以下に基本的な使い方を示します。
まず、PandasのSeriesを作成します。
import pandas as pd
s = pd.Series([2, 3, 4, 5, 8, 6, 7, 8, 9, 5, 3, 6, 7])
次に、rolling
メソッドを使用して移動窓を定義します。この例では、窓のサイズを3に設定します。
rolling_s = s.rolling(3)
最後に、max
メソッドを使用して各窓での最大値を計算します。
result = rolling_s.max()
このresult
は、元のSeriesと同じ長さを持ち、各位置での窓内の最大値を示します。窓内のデータが足りない場所(この例では最初の2つの位置)はNaNになります。
以上が、PandasのRolling Maxの基本的な使い方です。これを利用することで、データの局所的な特性を捉えることができます。具体的な使用例や応用例については、次のセクションで詳しく説明します。
具体的な使用例
ここでは、株価データの移動最大値を計算する具体的な使用例を示します。この例では、Pandasのrolling
とmax
を使用して、過去3日間の最高株価を計算します。
まず、株価データを含むDataFrameを作成します。
import pandas as pd
data = {
'date': pd.date_range(start='2024-01-01', periods=10),
'price': [1, 3, 7, 9, 2, 5, 8, 3, 6, 7]
}
df = pd.DataFrame(data)
次に、rolling
メソッドを使用して移動窓を定義し、max
メソッドでその窓内の最大値を計算します。
df['rolling_max'] = df['price'].rolling(3).max()
このrolling_max
列には、各日付での過去3日間の最高株価が格納されます。最初の2つの位置は窓内のデータが足りないためNaNになります。
以上が、PandasのRolling Maxの具体的な使用例です。このように、Rolling Maxは時系列データの局所的な特性を捉えるのに非常に有用です。次のセクションでは、グループごとのRolling Maxの計算方法について説明します。
グループごとのRolling Maxの計算
Pandasでは、データをグループに分けてそれぞれのグループでRolling Maxを計算することも可能です。これはgroupby
メソッドとrolling
メソッドを組み合わせて行います。以下に具体的な手順を示します。
まず、グループ分けを行うためのカテゴリデータと数値データを含むDataFrameを作成します。
import pandas as pd
data = {
'category': ['A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'],
'value': [1, 3, 7, 2, 5, 8, 3, 6, 7]
}
df = pd.DataFrame(data)
次に、groupby
メソッドを使用してデータをカテゴリごとにグループ分けし、その上でrolling
メソッドとmax
メソッドを適用します。
df['rolling_max'] = df.groupby('category')['value'].rolling(2).max().reset_index(level=0, drop=True)
このrolling_max
列には、各カテゴリでの過去2つのデータの最大値が格納されます。各カテゴリの最初の位置は窓内のデータが足りないためNaNになります。
以上が、PandasのRolling Maxをグループごとに計算する方法です。このように、Rolling Maxはグループごとの局所的な特性を捉えるのに非常に有用です。次のセクションでは、Rolling Maxの応用例について説明します。
Rolling Maxの応用例
Rolling Maxは、データ分析において様々な応用例があります。ここでは、金融データ分析におけるRolling Maxの応用例を紹介します。
ボラティリティの計算
金融データ分析では、価格の変動性(ボラティリティ)を計算するためにRolling Maxを使用することがあります。具体的には、過去N日間の最高価格と最低価格の差(レンジ)を計算し、それを価格の変動性の指標とします。
df['high'] = df['price'].rolling(window).max()
df['low'] = df['price'].rolling(window).min()
df['volatility'] = df['high'] - df['low']
トレンドラインの描画
また、Rolling Maxはトレンドラインを描画する際にも使用されます。過去N日間の最高価格を連続的にプロットすることで、上昇トレンドラインを描画することができます。
df['rolling_max'] = df['price'].rolling(window).max()
df['price'].plot()
df['rolling_max'].plot()
以上が、PandasのRolling Maxの応用例です。Rolling Maxはデータ分析において非常に強力なツールであり、その応用範囲は広範です。このような基本的な操作をマスターすることで、より複雑なデータ分析タスクに対応することが可能になります。次のセクションでは、さらに高度な応用例について説明します。