Skip to content

時系列分析のマスタリング:Pandas Resampleの使い方

Updated on

Pythonの強力なライブラリであるPandasを使用すると、時系列データの分析がより簡単になります。時系列分析の特徴の一つがresample()関数です。これについて初めて学ぶ方、またはより包括的な理解を得たい方に対して、この記事ではPandas Resampleの使い方に関する詳細なガイドを提供します。

Pythonで簡単にグラフを作成したいですか?

PyGWalkerは、Jupyter Notebook環境で直接データ分析および可視化のワークフローを高速化することができるオープンソースのPythonプロジェクトです。

PyGWalker (opens in a new tab)は、Pandasのデータフレーム(またはPolarsのデータフレーム)を視覚化UIに変換し、簡単にグラフを作成するための変数をドラッグアンドドロップできます。次のコードを使用して簡単に使用できます:

pip install pygwalker
import pygwalker as pyg
gwalker = pyg.walk(df)

PyGWalkerは、次のオンラインノートブックで今すぐ実行できます!

私たちのGitHubリポジトリにも是非星をつけてください!

Kaggle Notebook で実行する (opens in a new tab) | Google Colab で実行する (opens in a new tab) | GitHub に星をつける (opens in a new tab)

Pandas Resampleの力

groupby()で特定のカテゴリに基づいてデータをグループ化できるように、resample()を使用すると、異なる時間間隔でデータをグループ化することができます。このユニークな機能により、時系列データのデータ変換とクリーニングが向上します。しかし、そのフルポテンシャルを引き出すには、主要なパラメーターとそれに基づく概念を理解する必要があります。

リサンプリングのキー・コンセプト

リサンプリングは、主に2つのタイプに分類されます。

  1. アップサンプリング:データの頻度を増やすことにより、年次データを月次データに変換するなど、データの頻度を増やすことを意味します。これにより、より多くのデータポイントが時系列を表します。
  2. ダウンサンプリング:アップサンプリングの反対で、月次データを年次データに変換するなど、データの頻度を減らすことを意味します。

Resampleの主要なパラメータの理解

ここからは、resample()を効果的に使用するためにマスターする必要がある主要パラメータについて詳しく調べていきましょう。

'rule'パラメータ

ルールは、データをリサンプリングする頻度を指定する必要なパラメータです。5分間隔または30分間隔で時系列をグループ化する必要がある場合は、ルールパラメータによってカバーされます。

# データを5分間隔で再サンプリング
df.resample(rule='5T')

'axis'パラメータ

axisパラメータ(デフォルト=0)は、列または行を再サンプリングするかどうかを決定します。ほとんどの時系列データでは、axis = 0(行を再サンプリングする)が一般的な使用方法です。

# 列を沿ってデータを再サンプリング
df.resample(rule='5T', axis=1)

'closed'パラメータ

closedパラメータは、閉じた間隔のどちらの側面を使用するかを制御します。つまり、その間隔から再サンプリングされたデータを含めないようになります。時間サンプルの端のデータを含めるかどうかを決定するときに特に便利です。

# 右側のインターバルを閉じたデータを再サンプリング
df.resample(rule='5T', closed='right')

'label'パラメータ

このパラメータは、再サンプリング後に作成された新しいビンにラベルを付けるのに役立ちます。ビンには、開始と終了の2つの側面があります。このパラメータは、新しいビンのラベルがどのようになるかを決定します。

# 右側のラベルでデータを再サンプリング
df.resample(rule='5T', label='right')

'convention'パラメータ

conventionパラメータは、主にup-sampling時に使用され、データポイントを置く場所を決定します。

#「start」という convention でデータを再サンプリングする
df.resample(rule='5T', convention='start')

探索すべきパラメータは他にもありますが、これらは効果的にresample関数を利用する基盤を構築するものです。

全体を通して確認: Pandas Resample in Action

理解をまとめるために、詳細な例を見てみましょう。10時から11時まで、5分ごとにデータポイントが記録された時間系列データがあると想像してください。今度は、このデータを15分間隔に再サンプリングしたいとします。

import pandas as pd
 
# 日付の範囲を作成する
date_range = pd.date_range(start='10:00', end='11:00', freq='5T')
 
# ランダムな DataFrame を作成する
df = pd.DataFrame(date_range, columns=['date'])
df['data'] = np.random.randint(0,100,size=(len(date_range)))
 
# 日付の列をインデックスとして設定する
df.set_index('date', inplace=True)
 
# データを15分間隔に再サンプリングする
resampled_data = df.resample(rule='15T').mean()

この例では、午前10時から11時まで5分ごとにデータポイントが作成されたDataFrameを作成しました。その後、resample()を使用して、各インターバルに落ちるデータポイントの平均値を取り、データを15分間隔に再サンプリングしました。

再サンプリングの技術を習得することは、時系列分析のスキルセットを大幅に向上させることができます。さまざまなパラメータや技術を試して、その影響を理解するために躊躇しないでください。