注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
1個以上の時系列を、入力系列ごとに列を持つ単一の時系列に結合する関数を返します。
↗ 補間は、ほかの系列にデータ点が存在するタイムスタンプについて、 系列内の欠損データ点の値を推定します。この関数は、設定された補間方法を使用して、 データ点が欠損している箇所の入力系列データをリサンプリングし、揃えます。
時系列の補間は、before、internal、after の3つの異なる時間範囲に分けられます。
それぞれの時間範囲では、時系列の異なる部分にある欠損値を補間します。
time_extent() 内にあるデータ点の値が推定されます。系列ごとに異なる方法を適用するには、上記の時間範囲に対するそれぞれの方法をリストとして渡すことができます。 各リスト要素は、対応する入力系列に使用する方法に対応します。単一の方法を渡した場合は、 すべての入力系列に同じ方法が適用されます。
内部補間でサポートされる補間方法は次のとおりです。
| 方法 | 説明 |
|---|---|
| LINEAR | 補間対象のタイムスタンプの直前と直後にある2個のデータ点に対する 最適な直線を使用して、データ点を線形補間します。 |
| NEAREST | 入力系列のいずれかで、タイムスタンプが最も近いデータ点の値を使用します。 |
| PREVIOUS | 入力時系列内で、直前に定義されているデータ点の値を使用します。 |
| NEXT | 入力時系列内で、次に現れるデータ点の値を使用します。 |
| NONE | 補間をスキップします。いずれの入力系列にもデータ点が存在しない タイムスタンプでは、出力 df に null 値が使用されます。 |
外部補間(before、after)でサポートされる補間方法は次のとおりです。
| 方法 | 説明 |
|---|---|
| NEAREST | 最も近い定義済みデータ点の値を使用します(最初または最後のデータ点になります)。 |
| NONE (デフォルト) | 最初のデータ点より前と最後のデータ点より後では補間しません。 |
任意で頻度を設定すると、指定した頻度のタイムスタンプのみを補間できます。頻度を指定すると、 入力系列全体がリサンプリングされ、指定した頻度でのみデータ点が作成され、 補間されます。リサンプリングされた出力については、以下の interpolated_every_10ns_series と multiple_interpolated_every_10ns_series の例を 参照してください。
NONE)。NONE)。
(デフォルトは NONE)。NONE)。| 列名 | データ型 | 説明 |
|---|---|---|
| timestamp | pandas.Timestamp | データ点のタイムスタンプ |
| value | Union[float, str] | データ点の値 |
列挙型の系列には LINEAR 補間を使用しないでください。使用すると、この操作に失敗します。
この関数の出力は、単一系列または複数系列のデータフレームになる場合があり、 それぞれに対応する入力を想定したほかの関数でのみ使用できます。
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15>>> series_1 = F.points((1, 1.0), (101, 2.0), (200, 4.0), (201, 8.0), name="series-1") >>> series_2 = F.points((2, 11.0), (102, 12.0), (201, 14.0), (202, 18.0), name="series-2") >>> series_1.to_pandas() timestamp value 0 1970-01-01 00:00:00.000000001 1.0 1 1970-01-01 00:00:00.000000101 2.0 2 1970-01-01 00:00:00.000000200 4.0 3 1970-01-01 00:00:00.000000201 8.0 >>> series_2.to_pandas() timestamp value 0 1970-01-01 00:00:00.000000002 11.0 1 1970-01-01 00:00:00.000000102 12.0 2 1970-01-01 00:00:00.000000201 14.0 3 1970-01-01 00:00:00.000000202 18.0 >>> nc = NodeCollection([series_1, series_2])
Copied!1 2 3 4 5 6 7 8 9 10>>> linear_interpolated_series = F.interpolate(internal="LINEAR")(nc) >>> linear_interpolated_series.to_pandas() timestamp series-1 series-2 0 1970-01-01 00:00:00.000000001 1.000000 NaN 1 1970-01-01 00:00:00.000000002 1.010000 11.000000 2 1970-01-01 00:00:00.000000101 2.000000 11.990000 3 1970-01-01 00:00:00.000000102 2.020202 12.000000 4 1970-01-01 00:00:00.000000200 4.000000 13.979798 5 1970-01-01 00:00:00.000000201 8.000000 14.000000 6 1970-01-01 00:00:00.000000202 NaN 18.000000
Copied!1 2 3 4 5 6 7 8 9 10>>> nearest_interpolated_series = F.interpolate(internal="NEAREST")(nc) >>> nearest_interpolated_series.to_pandas() timestamp series-1 series-2 0 1970-01-01 00:00:00.000000001 1.0 NaN 1 1970-01-01 00:00:00.000000002 1.0 11.0 2 1970-01-01 00:00:00.000000101 2.0 12.0 3 1970-01-01 00:00:00.000000102 2.0 12.0 4 1970-01-01 00:00:00.000000200 4.0 14.0 5 1970-01-01 00:00:00.000000201 8.0 14.0 6 1970-01-01 00:00:00.000000202 NaN 18.0
Copied!1 2 3 4 5 6 7 8 9 10>>> previous_interpolated_series = F.interpolate(internal="PREVIOUS")(nc) >>> previous_interpolated_series.to_pandas() timestamp series-1 series-2 0 1970-01-01 00:00:00.000000001 1.0 NaN 1 1970-01-01 00:00:00.000000002 1.0 11.0 2 1970-01-01 00:00:00.000000101 2.0 11.0 3 1970-01-01 00:00:00.000000102 2.0 12.0 4 1970-01-01 00:00:00.000000200 4.0 12.0 5 1970-01-01 00:00:00.000000201 8.0 14.0 6 1970-01-01 00:00:00.000000202 NaN 18.0
Copied!1 2 3 4 5 6 7 8 9 10>>> next_interpolated_series = F.interpolate(internal="NEXT")(nc) >>> next_interpolated_series.to_pandas() timestamp series-1 series-2 0 1970-01-01 00:00:00.000000001 1.0 NaN 1 1970-01-01 00:00:00.000000002 2.0 11.0 2 1970-01-01 00:00:00.000000101 2.0 12.0 3 1970-01-01 00:00:00.000000102 4.0 12.0 4 1970-01-01 00:00:00.000000200 4.0 14.0 5 1970-01-01 00:00:00.000000201 8.0 14.0 6 1970-01-01 00:00:00.000000202 NaN 18.0
Copied!1 2 3 4 5 6 7 8 9 10>>> none_interpolated_series = F.interpolate(internal="NONE")(nc) # 欠損している点をすべてスキップします >>> none_interpolated_series.to_pandas() timestamp series-1 series-2 0 1970-01-01 00:00:00.000000001 1.0 NaN 1 1970-01-01 00:00:00.000000002 NaN 11.0 2 1970-01-01 00:00:00.000000101 2.0 NaN 3 1970-01-01 00:00:00.000000102 NaN 12.0 4 1970-01-01 00:00:00.000000200 4.0 NaN 5 1970-01-01 00:00:00.000000201 8.0 14.0 6 1970-01-01 00:00:00.000000202 NaN 18.0
Copied!1 2 3 4 5 6 7 8 9 10>>> external_interpolated_series = F.interpolate(before="NEAREST", after="NEAREST")(nc) >>> external_interpolated_series.to_dataframe() timestamp series-1 series-2 0 1970-01-01 00:00:00.000000001 1.0 11.0 1 1970-01-01 00:00:00.000000002 NaN 11.0 2 1970-01-01 00:00:00.000000101 2.0 NaN 3 1970-01-01 00:00:00.000000102 12.0 4 1970-01-01 00:00:00.000000200 4.0 NaN 5 1970-01-01 00:00:00.000000201 8.0 14.0 6 1970-01-01 00:00:00.000000202 8.0 18.0
Copied!1 2 3 4 5 6 7 8 9 10>>> interpolated_series = F.interpolate(internal=["LINEAR", "NONE"])(nc) # 時系列ごとに異なる方式を使用します >>> interpolated_series.to_pandas() timestamp series-1 series-2 0 1970-01-01 00:00:00.000000001 1.000000 NaN 1 1970-01-01 00:00:00.000000002 1.010000 11.0 2 1970-01-01 00:00:00.000000101 2.000000 NaN 3 1970-01-01 00:00:00.000000102 2.020202 12.0 4 1970-01-01 00:00:00.000000200 4.000000 NaN 5 1970-01-01 00:00:00.000000201 8.000000 14.0 6 1970-01-01 00:00:00.000000202 NaN 18.0
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23>>> interpolated_every_10ns_series = F.interpolate(internal="NEAREST", frequency="10ns")(series_1) >>> interpolated_every_10ns_series.to_pandas() timestamp series-1 0 1970-01-01 00:00:00.000000010 1.0 1 1970-01-01 00:00:00.000000020 1.0 2 1970-01-01 00:00:00.000000030 1.0 3 1970-01-01 00:00:00.000000040 1.0 4 1970-01-01 00:00:00.000000050 1.0 5 1970-01-01 00:00:00.000000060 2.0 6 1970-01-01 00:00:00.000000070 2.0 7 1970-01-01 00:00:00.000000080 2.0 8 1970-01-01 00:00:00.000000090 2.0 9 1970-01-01 00:00:00.000000100 2.0 10 1970-01-01 00:00:00.000000110 2.0 11 1970-01-01 00:00:00.000000120 2.0 12 1970-01-01 00:00:00.000000130 2.0 13 1970-01-01 00:00:00.000000140 2.0 14 1970-01-01 00:00:00.000000150 2.0 15 1970-01-01 00:00:00.000000160 4.0 16 1970-01-01 00:00:00.000000170 4.0 17 1970-01-01 00:00:00.000000180 4.0 18 1970-01-01 00:00:00.000000190 4.0 19 1970-01-01 00:00:00.000000200 4.0
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25>>> multiple_interpolated_every_10ns_series = F.interpolate( ... internal="NEAREST", frequency="10ns" ... )(nc) >>> multiple_interpolated_every_10ns_series.to_pandas() timestamp series-1 series-2 0 1970-01-01 00:00:00.000000010 1.0 11.0 1 1970-01-01 00:00:00.000000020 1.0 11.0 2 1970-01-01 00:00:00.000000030 1.0 11.0 3 1970-01-01 00:00:00.000000040 1.0 11.0 4 1970-01-01 00:00:00.000000050 1.0 11.0 5 1970-01-01 00:00:00.000000060 2.0 12.0 6 1970-01-01 00:00:00.000000070 2.0 12.0 7 1970-01-01 00:00:00.000000080 2.0 12.0 8 1970-01-01 00:00:00.000000090 2.0 12.0 9 1970-01-01 00:00:00.000000100 2.0 12.0 10 1970-01-01 00:00:00.000000110 2.0 12.0 11 1970-01-01 00:00:00.000000120 2.0 12.0 12 1970-01-01 00:00:00.000000130 2.0 12.0 13 1970-01-01 00:00:00.000000140 2.0 12.0 14 1970-01-01 00:00:00.000000150 2.0 12.0 15 1970-01-01 00:00:00.000000160 4.0 14.0 16 1970-01-01 00:00:00.000000170 4.0 14.0 17 1970-01-01 00:00:00.000000180 4.0 14.0 18 1970-01-01 00:00:00.000000190 4.0 14.0 19 1970-01-01 00:00:00.000000200 4.0 14.0