PandasのRolling関数を活用したデータ分析

Rolling関数の基本的な使い方

PandasのRolling関数は、データの移動窓を作成し、その窓に対して各種の操作(平均、中央値、標準偏差など)を適用するための強力なツールです。以下に基本的な使い方を示します。

まず、PandasのDataFrameを作成します。

import pandas as pd
import numpy as np

# 日付範囲を作成
date = pd.date_range(start='1/1/2020', end='12/31/2020')

# ランダムなデータを生成
data = np.random.randn(len(date))

# DataFrameを作成
df = pd.DataFrame(data, index=date, columns=['Value'])

次に、Rolling関数を使用して移動平均を計算します。

# 7日間の移動平均を計算
df['7_day_MA'] = df['Value'].rolling(window=7).mean()

このコードは、各日付に対して、その日と前の6日間(合計7日間)の平均値を計算します。結果は新しい列 ‘7_day_MA’ に保存されます。

Rolling関数は、データ分析において非常に便利なツールであり、時系列データのトレンドを理解するのに役立ちます。他の窓関数(例えば、expanding、ewmなど)と組み合わせることで、さらに強力なデータ分析が可能になります。次のセクションでは、これらの詳細について説明します。

Rolling関数のパラメータ詳細

PandasのRolling関数は、以下の主要なパラメータを持っています。

DataFrame.rolling(window, min_periods=None, center=False, win_type=None, on=None, axis=0, closed=None)
  • window: 移動窓のサイズを指定します。整数を指定すると、その数のデータポイントが窓のサイズとなります。
  • min_periods: 窓内に必要な最小の観測値の数を指定します。これを指定すると、窓内の観測値がこの数未満の場合、結果はNAになります。
  • center: ブール値を指定します。Trueを指定すると、窓の中心をラベルに設定します。
  • win_type: 窓の形状を指定します。デフォルトはNoneで、これは一様な窓を意味します。他のオプションには ‘boxcar’, ‘triang’, ‘blackman’, ‘hamming’, ‘bartlett’, ‘parzen’, ‘bohman’, ‘blackmanharris’, ‘nuttall’, ‘barthann’ などがあります。
  • on: 列ラベルまたは列の位置を指定します。これを指定すると、その列の値に基づいて窓を計算します。
  • axis: 0または1を指定します。0を指定すると(デフォルト)、操作は各列に対して行われます。1を指定すると、操作は各行に対して行われます。
  • closed: ‘right’(デフォルト)、’left’、’both’、’neither’ のいずれかを指定します。これは、区間が閉じている側を制御します。

これらのパラメータを適切に設定することで、Rolling関数の挙動を細かく制御することができます。次のセクションでは、これらのパラメータを活用した時系列データ分析の例を見ていきましょう。

Rolling関数での時系列データ分析

PandasのRolling関数は、時系列データ分析において非常に有用です。以下に、Rolling関数を使用した時系列データ分析の基本的な手順を示します。

まず、時系列データを含むPandasのDataFrameを準備します。ここでは、株価のデータを例に取ります。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# ダミーの株価データを生成
np.random.seed(0)
dates = pd.date_range(start='1/1/2020', end='12/31/2020')
prices = np.cumsum(np.random.randn(len(dates))) * 100 + 1000

# DataFrameを作成
df = pd.DataFrame(prices, index=dates, columns=['Price'])

次に、Rolling関数を使用して移動平均を計算します。

# 7日間と30日間の移動平均を計算
df['7_day_MA'] = df['Price'].rolling(window=7).mean()
df['30_day_MA'] = df['Price'].rolling(window=30).mean()

最後に、元のデータと移動平均をプロットします。

plt.figure(figsize=(12, 6))
plt.plot(df['Price'], label='Price')
plt.plot(df['7_day_MA'], label='7-day MA')
plt.plot(df['30_day_MA'], label='30-day MA')
plt.legend()
plt.show()

このように、Rolling関数を使用すると、時系列データのトレンドを視覚的に理解することができます。また、移動平均はノイズの多いデータを滑らかにするのにも役立ちます。次のセクションでは、Rolling関数の応用例を見ていきましょう。

Rolling関数の応用例

PandasのRolling関数は、その基本的な機能だけでなく、さまざまな応用例もあります。以下に、いくつかの応用例を示します。

ボラティリティの計算

株価のボラティリティ(価格変動の度合い)は、金融市場のリスクを評価するための重要な指標です。Rolling関数を使用して、過去N日間のボラティリティを計算することができます。

# 7日間のボラティリティを計算
df['7_day_volatility'] = df['Price'].rolling(window=7).std()

Bollinger Bandsの計算

Bollinger Bandsは、株価の上下の「バンド」を描くためのテクニカル分析ツールです。これは、移動平均±(標準偏差×k)で計算されます。Rolling関数を使用して、Bollinger Bandsを計算することができます。

# 移動平均と標準偏差を計算
df['30_day_MA'] = df['Price'].rolling(window=30).mean()
df['30_day_std'] = df['Price'].rolling(window=30).std()

# Bollinger Bandsを計算
df['Upper_band'] = df['30_day_MA'] + (df['30_day_std'] * 2)
df['Lower_band'] = df['30_day_MA'] - (df['30_day_std'] * 2)

時系列データのスムージング

Rolling関数は、ノイズの多い時系列データを滑らかにするのにも使用できます。これは、データのトレンドを視覚的に理解するのに役立ちます。

# 7日間の移動平均でデータをスムージング
df['Smoothed'] = df['Price'].rolling(window=7).mean()

これらの例は、Rolling関数の応用例の一部に過ぎません。Rolling関数は、その強力な機能と柔軟性により、さまざまなデータ分析タスクに対応することができます。

投稿者 karaza

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です