解決済み: アップサンプリング後の pandas バックワード フィル

今日の世界では、さまざまな現象を理解し、情報に基づいた意思決定を行うために、データの操作と分析が不可欠です。 データ分析の一般的なタスクの XNUMX つは、時系列データのリサンプリングです。これには、アップサンプリング (頻度を増やす) またはダウンサンプリング (頻度を減らす) のいずれかによって、データの頻度を変更することが含まれます。 この記事では、強力な Python ライブラリである Pandas を使用して、時系列データをアップサンプリングしながら後方充填するプロセスについて説明します。

時系列データの後方入力

時系列データをアップサンプリングすると、データ ポイントの頻度が高くなり、通常、新しく作成されたデータ ポイントの値が失われます。 これらの欠損値を埋めるために、さまざまな方法を使用できます。 そのようなメソッドの XNUMX つが呼び出されます。 後方充填、 としても知られている 埋め戻し. バックワード フィルは、欠損値を時系列で次に利用可能な値で埋めるプロセスです。

パンダライブラリ

Pythonの パンダライブラリ はデータ操作に不可欠なツールであり、DataFrame や時系列データなどのデータ構造を処理するための幅広い機能を提供します。 Pandas には、リサンプリングや欠損値の埋め込みなど、時系列データの操作を容易にする機能が組み込まれているため、アップサンプリング後に逆方向の埋め込みを効率的に実行できます。

解決策: Pandas を使用した後方塗りつぶし

Pandas を使用して時系列データをアップサンプリングした後にバックワード フィルを適用するプロセスを示すために、簡単な例を考えてみましょう。 まず、必要なライブラリをインポートし、サンプルの時系列データセットを作成します。

import pandas as pd
import numpy as np

# Create a sample time series dataset
date_rng = pd.date_range(start='2022-01-01', end='2022-01-10', freq='D')
data = np.random.randint(0, 100, size=(len(date_rng), 1))

df = pd.DataFrame(date_rng, columns=['date'])
df['value'] = data

サンプルデータができたので、アップサンプリングと逆方向塗りつぶし方法の適用に進みます。 この例では、毎日の頻度から毎時の頻度にアップサンプリングします。

# Upsample the data to hourly frequency
df.set_index('date', inplace=True)
hourly_df = df.resample('H').asfreq()

# Apply the backward fill method to fill missing values
hourly_df.fillna(method='bfill', inplace=True)

上記のコードでは、最初に「日付」列をインデックスとして設定し、次に、 リサンプル() 関数。 結果の DataFrame には、頻度が増加したために値が欠落しています。 次に、 fillna() パラメーター 'bfill' を使用してメソッドを呼び出し、欠損値に対して逆方向の塗りつぶしを実行します。

段階的な説明

理解を深めるためにコードを分解してみましょう。

1. まず、Pandas および NumPy ライブラリをインポートしました。

   import pandas as pd
   import numpy as np
   

2. を使用してサンプルの時系列データセットを作成しました 日付範囲() 毎日の日付とランダムな数値を生成する Pandas の関数:

   date_rng = pd.date_range(start='2022-01-01', end='2022-01-10', freq='D')
   data = np.random.randint(0, 100, size=(len(date_rng), 1))
   df = pd.DataFrame(date_rng, columns=['date'])
   df['value'] = data
   

3.次に、「日付」列をインデックスとして設定し、データを XNUMX 時間ごとの頻度で再サンプリングしました。 リサンプル() & asfreq() 機能:

   df.set_index('date', inplace=True)
   hourly_df = df.resample('H').asfreq()
   

4. 最後に、アップサンプリングされた DataFrame の欠損値を fillna() バックワード フィル用の 'bfill' パラメータを使用したメソッド:

   hourly_df.fillna(method='bfill', inplace=True)
   

まとめ

この記事では、 時系列データのアップサンプリング後の後方充填 Python で強力な Pandas ライブラリを使用します。 これらの手法を理解して実装することで、時系列データを効率的に操作および分析し、貴重な洞察を発見し、情報に基づいた意思決定を行うことができます。

関連記事:

コメント