import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
xDist,yDat,density = np.genfromtxt('asd.csv', delimiter = ',', usecols= (14,15,10), unpack =True, skip_header = 1)
df = pd.DataFrame({"Horizontal_Distance_x": xDist, "Raw_y_data": yDat, "Density": density})
df.drop(df[(df.Raw_y_data <= 590000) | (df.Horizontal_Distance_x < 500000) | \
(df.Horizontal_Distance_x > 1500000)].index, inplace=True)
density_d = df.Density/1000
yDat_y=(-1000000+df.Raw_y_data)/1000
xDist_x=(df.Horizontal_Distance_x-500000)/1000
df2 = pd.DataFrame({"Horizontal_Distance_x": xDist_x, "Raw_y_data": yDat_y, "Density": density_d})
df.to_csv("x_y_density.csv", index=False)
df2.to_csv("x_y_density2.csv", index=False)
plt.xlim([0,1000])
plt.xticks(range(0,1001,200))
plt.ylim(-400,0)
plt.grid(True)
plt.scatter(df2.Horizontal_Distance_x, df2.Raw_y_data, s=10)
所以,Raw_y_data 中的变量在“x_y_density2.csv”中达到-375.01,我只想将这个数字插值到-400。我希望现在清楚了。
你的问题有点不清楚,部分原因是你的情节有
Raw_y_data
与Horizontal_Distance_x
,而你想要的是Raw_y_data
(外推)值,而不是x值。 (我还假设你的意思是外推,而不是内插。但是由于我们看不到你的数据,也没有显示数据的数字,所以这个答案中有很多猜测。)
您可以使用来自 SciPy 的样条插值器之一。例如,
PchipInterpolator
:
import numpy as np
from scipy.interpolate import PchipInterpolator
interpolator = PchipInterpolator(df2.Raw_y_data, df2.Horizontal_Distance_x)
extrapolated_value = interpolator(-400)
根据您的数据和插值器的选择,您可能会得到一个不错的近似值,或者一个偏离图表的近似值。 在 SciPy 文档 中有更多关于这方面的内容,有一大堆例子。