はじめに:時間系列データとは
時間系列データとは、時間の経過とともに観測または記録されたデータのことを指します。これらのデータは、一定の間隔(例えば、毎日、毎月、毎秒など)で収集され、時間の順序に従って並べられます。
時間系列データの例としては、株価の変動、気温の変化、ウェブサイトの訪問者数、製品の売上高などがあります。これらのデータは時間の経過とともに変化するため、そのパターンを理解し、未来の値を予測することが重要となります。
このようなデータを効果的に分析するためには、適切なツールが必要となります。Pythonのライブラリであるpandasは、そのようなツールの一つで、特に時間系列データの操作と分析に強力な機能を提供しています。次のセクションでは、その中でもresample
関数の使用方法について詳しく説明します。
Pandasのresample関数の概要
Pandasのresample
関数は、時間系列データの再サンプリングを行うための強力なツールです。再サンプリングとは、データの時間間隔を変更することを指します。これは、データをより高頻度または低頻度に変換するために使用されます。
resample
関数は、以下のように使用します:
df.resample(rule, axis=0, closed=None, label=None, convention='start', kind=None, loffset=None, base=None, on=None, level=None)
ここで、rule
パラメータは再サンプリングの頻度を指定します。例えば、’D’は日次、’M’は月次、’Y’は年次を意味します。
axis
パラメータは再サンプリングを行う軸を指定します。デフォルトは0(インデックス)です。
その他のパラメータについては、次のセクションで詳しく説明します。
resample
関数は、データの集約(ダウンサンプリング)や補間(アップサンプリング)を行うための基本的なステップを提供します。これにより、時間系列データの分析が容易になります。次のセクションでは、この関数を用いた具体的な例を見ていきましょう。
resample関数の主要なパラメータ
Pandasのresample
関数には、以下の主要なパラメータがあります:
-
rule:再サンプリングの頻度を指定します。例えば、’D’は日次、’M’は月次、’Y’は年次を意味します。
-
axis:再サンプリングを行う軸を指定します。デフォルトは0(インデックス)です。
-
closed:各時間ビンのどちらの側を閉じるか(’right’または’left’)を指定します。デフォルトはNoneで、これは’left’を意味します。
-
label:各時間ビンのどちらの側のラベルを使用するか(’right’または’left’)を指定します。デフォルトはNoneで、これは’left’を意味します。
-
convention:期間をタイムスタンプに変換するときの規則を指定します。’start’または’end’を指定できます。デフォルトは’start’です。
-
kind:期間(’period’)、タイムスタンプ(’timestamp’)、またはNoneを指定します。デフォルトはNoneで、これは入力データの種類を維持します。
-
loffset:再サンプリング後のラベルに対するオフセットを指定します。デフォルトはNoneです。
-
base:再サンプリングの間隔を調整するための基準となる値を指定します。デフォルトはNoneです。
-
on:再サンプリングを行う列を指定します。デフォルトはNoneです。
-
level:マルチインデックスのレベルで再サンプリングを行う場合に指定します。デフォルトはNoneです。
これらのパラメータを適切に設定することで、resample
関数は非常に柔軟な再サンプリング操作を可能にします。次のセクションでは、これらのパラメータを用いた具体的な例を見ていきましょう。
resample関数を用いた再サンプリングの例
以下に、pandasのresample
関数を用いた再サンプリングの具体的な例を示します。
まず、時間系列データを持つDataFrameを作成します。
import pandas as pd
import numpy as np
# 日付範囲を作成
date_rng = pd.date_range(start='1/1/2020', end='1/10/2020', freq='H')
# DataFrameを作成
df = pd.DataFrame(date_rng, columns=['date'])
# ランダムなデータを追加
df['data'] = np.random.randint(0,100,size=(len(date_rng)))
df.set_index('date', inplace=True)
このDataFrameは、2020年1月1日から2020年1月10日までの各時間ごとのランダムなデータを持っています。
次に、このデータを日次に再サンプリングします。
df_daily = df.resample('D').mean()
このコードは、各日の平均値を計算しています。resample
関数は、デフォルトで各ビン(この場合は各日)のラベルをビンの左側(開始)に設定します。
同様に、データを週次、月次、四半期ごと、年次などに再サンプリングすることも可能です。これにより、時間系列データの異なる視点からの分析が可能になります。
以上が、pandasのresample
関数を用いた再サンプリングの基本的な例です。次のセクションでは、resample
関数を用いた周波数変換の例を見ていきましょう。
resample関数を用いた周波数変換の例
以下に、pandasのresample
関数を用いた周波数変換の具体的な例を示します。
まず、時間系列データを持つDataFrameを作成します。
import pandas as pd
import numpy as np
# 日付範囲を作成
date_rng = pd.date_range(start='1/1/2020', end='1/10/2020', freq='H')
# DataFrameを作成
df = pd.DataFrame(date_rng, columns=['date'])
# ランダムなデータを追加
df['data'] = np.random.randint(0,100,size=(len(date_rng)))
df.set_index('date', inplace=True)
このDataFrameは、2020年1月1日から2020年1月10日までの各時間ごとのランダムなデータを持っています。
次に、このデータを5時間ごとに再サンプリングします。
df_5H = df.resample('5H').mean()
このコードは、各5時間の平均値を計算しています。resample
関数は、デフォルトで各ビン(この場合は各5時間)のラベルをビンの左側(開始)に設定します。
同様に、データを任意の時間間隔に再サンプリングすることも可能です。これにより、時間系列データの異なる視点からの分析が可能になります。
以上が、pandasのresample
関数を用いた周波数変換の基本的な例です。このように、resample
関数は時間系列データの分析において非常に有用なツールとなります。次のセクションでは、これまでに学んだことをまとめていきましょう。
まとめ
この記事では、Pythonのデータ分析ライブラリであるpandasのresample
関数について詳しく見てきました。resample
関数は、時間系列データの再サンプリングと周波数変換を行うための強力なツールです。
まず、時間系列データとは何か、そしてそれがなぜ重要なのかを理解しました。次に、resample
関数の概要と主要なパラメータについて学びました。そして、resample
関数を用いた再サンプリングと周波数変換の具体的な例を見てきました。
これらの知識を活用することで、時間系列データの分析がより容易になります。pandasはその他にも多くの便利な機能を提供しており、データ分析の幅を広げることができます。
今後もpandasを活用して、データ分析のスキルを磨いていきましょう。この記事がその一助となれば幸いです。それでは、Happy Data Analyzing! 🐼