はじめに
Python の pandas ライブラリのDataFrame.asfreq()メソッドは、時系列を指定された頻度に変換するために使用されます。欠損値をパディングまたはバックフィルする方法を提供します。このメソッドを DataFrame に適用することで、時系列を目的の頻度に変換し、頻度をアップサンプリングし、欠損値を埋めることができます。
VM のヒント
VM の起動が完了した後、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebook を使って練習しましょう。
Jupyter Notebook の読み込みには数秒かかる場合があります。Jupyter Notebook の制限により、操作の検証は自動化できません。
学習中に問題がある場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。
時系列を指定された頻度に変換する
時系列を異なる指定された頻度に変換するには、DataFrame.asfreq()メソッドを使用できます。以下は例です。
import pandas as pd
index = pd.date_range('1/1/2021', periods=4, freq='T')
series = pd.Series([0.0, None, 2.0, 3.0], index=index)
df = pd.DataFrame({'Time': series})
print(df)
print("Converting to a different frequency")
print(df.asfreq(freq='H'))
このコードは、時系列を持つ DataFrame を作成し、その後、1 時間ごとの頻度に変換します。元の DataFrame と変換後の DataFrame の両方を表示します。
DataFrame.asfreq() メソッドを使って時系列をアップサンプリングする
DataFrame.asfreq() メソッドを使えば、時系列の頻度をアップサンプリングすることもできます。以下は例です。
import pandas as pd
index = pd.date_range('1/1/2021', periods=4, freq='T')
series = pd.Series([0.0, None, 2.0, 3.0], index=index)
df = pd.DataFrame({'Time': series})
print(df)
print("Upsampling the timeseries")
print(df.asfreq(freq='50s'))
このコードでは、時系列を持つ DataFrame を作成し、その後、50 秒間隔の頻度にアップサンプリングします。元の DataFrame とアップサンプリング後の DataFrame の両方を表示します。
DataFrame.asfreq() メソッドを使って時系列をアップサンプリングして欠損値を埋める
DataFrame.asfreq() メソッドは、時系列をアップサンプリングする際に欠損値を埋めることもできます。以下は例です。
import pandas as pd
index = pd.date_range('1/1/2021', periods=4, freq='T')
series = pd.Series([0.0, None, None, 3.0], index=index)
df = pd.DataFrame({'Time': series})
print(df)
print("Upsampling timeseries and filling values")
print(df.asfreq(freq='50s', fill_value=9.0))
このコードでは、欠損値を持つ時系列を持つ DataFrame を作成します。その後、50 秒間隔の頻度にアップサンプリングし、欠損値を 9.0 で埋めます。元の DataFrame と埋められた値を持つアップサンプリング後の DataFrame の両方を表示します。
DataFrame.asfreq() メソッドを使って時系列をアップサンプリングして欠損値をバックフィルする
DataFrame.asfreq() メソッドは、時系列をアップサンプリングする際に欠損値をバックフィルすることもできます。以下は例です。
import pandas as pd
index = pd.date_range('1/1/2021', periods=4, freq='T')
series = pd.Series([0.0, None, None, 3.0], index=index)
df = pd.DataFrame({'Time': series})
print("Upsampling timeseries")
print(df.asfreq(freq='70s'))
print("Backward filling values")
print(df.asfreq(freq='70s', method='bfill'))
このコードでは、欠損値を持つ時系列を持つ DataFrame を作成します。その後、70 秒間隔の頻度にアップサンプリングし、欠損値をバックフィルします。アップサンプリングされた DataFrame とバックフィルされた値を持つ DataFrame の両方を表示します。
まとめ
pandas のDataFrame.asfreq()メソッドは、時系列データの変換、アップサンプリング、欠損値の埋めに役立つツールです。目的の頻度と欠損値の埋めに関するオプションパラメータを指定することで、時系列データを必要に合わせて操作することができます。このメソッドは、時系列データの処理と分析方法に柔軟性と制御を提供します。