スプライン補間したい(scipy.interpolate.CubicSpline

 1import pandas as pd
 2import numpy as np
 3from scipy.interpolate import CubicSpline
 4
 5# サンプルデータを作成
 6points = {
 7    "x": [0, 1, 2, 3, 4, 5],
 8    "y": [0, np.nan, 2, np.nan, 4, 5]
 9}
10data = pd.DataFrame(points)
11
12# データ点から欠損値を除外
13valid_data = data.dropna()
14x_valid = valid_data["x"]
15y_valid = valid_data["y"]
16
17# スプライン補間
18f_splined = CubicSpline(x_valid, y_valid)
19
20# 欠損値を補間
21x_data = data["x"]
22data["y_splined"] = f_splined(x_data)

scipy.interpolate.CubicSplineを使って、データをスプライン補間できます。

スプライン補間したい(scipy.interpolate.interp1d

 1import pandas as pd
 2import numpy as np
 3from scipy.interpolate import interp1d
 4
 5# サンプルデータを作成
 6points = {
 7    "x": [0, 1, 2, 3, 4, 5],
 8    "y": [0, np.nan, 2, np.nan, 4, 5]
 9}
10data = pd.DataFrame(points)
11
12# データ点から欠損値を除外
13valid_data = data.dropna()
14x_valid = valid_data["x"]
15y_valid = valid_data["y"]
16
17# スプライン補間
18f_splined = interp1d(x_valid, y_valid, kind="cubic", fill_value="extrapolate")
19
20# 欠損値を補間
21x_data = data["x"]
22data["y_splined"] = f_splined(x_data)

scipy.interpolate.interp1dを使って、データをスプライン補間できます。

注釈

interp1dはレガシーなクラスとなっています。 将来的に削除される可能性があるので、別のクラスに移行した方がよさそうです。

リファレンス