本記事では、下図のように、青点の間を一次式で補完して赤点を作成する関数を作成する雛形コードを載せました。
上記データは、下図の横軸にA列、縦軸にD列をとったものです。
■本プログラム
import pandas as pd
import numpy as np
import scipy as sp
from scipy.interpolate import interp1d
import matplotlib.pyplot as plt
plt.rcParams['font.size'] = 16
df = pd.read_csv('data.csv')
df
x_name = 'A'
y_name = 'D'
x = df[x_name]
y = df[y_name]
x_min = x.min()
x_max = x.max()
myfunc = sp.interpolate.interp1d(x, y)
x_new = np.linspace(x_min, x_max, len(x)*2)
print(x_new)
print(myfunc(x_new))
plt.scatter(x, y, c = 'b', label = 'original')
plt.scatter(x_new, myfunc(x_new), facecolor = 'None', edgecolors = 'r', label = 'new')
plt.xlabel(x_name)
plt.ylabel(y_name)
plt.legend(bbox_to_anchor = (1, 1))
plt.grid()
plt.show()
y = myfunc(7.5).tolist()
print(type(y), y)
2次の場合は下記リンク先を参照下さい。
hk29.hatenablog.jp
以上
<広告>
リンク