Методы интерполяции при работе с данными из нескольких pandas фреймов данных? - PullRequest
1 голос
/ 28 марта 2020

У меня есть DataFrame, который имеет много столбцов, и я хочу интерполировать, чтобы получить значения y, используя точки x, y и мои известные значения x. Я знаю, как выполнить интерполяцию, выбрав один столбец (каждого фрейма данных) из x, y точек и значений x. Моя цель - иметь DataFrame, содержащий все интерполированные значения y. Как правило, я могу получить значения y одним из двух способов (которые мне известны):

Вот пример того, как мои DataFrames устанавливаются изначально отформатированными:

random.seed( 30 )

df_x_pts = pd.DataFrame({
"x_pts_1": np.random.uniform(low=1, high=200, size=(10,)),
"x_pts_2": np.random.uniform(low=1, high=500, size=(10,)),
"x_pts_3": np.random.uniform(low=1, high=750, size=(10,)),})

df_y_pts = pd.DataFrame({
"y_pts_1": np.random.uniform(low=1, high=200, size=(10,)),
"y_pts_2": np.random.uniform(low=1, high=500, size=(10,)),
"y_pts_3": np.random.uniform(low=1, high=750, size=(10,)),})

df_x_vals = pd.DataFrame({
"x_vals_1": np.random.uniform(low=1, high=200, size=(50,)),
"x_vals_2": np.random.uniform(low=1, high=500, size=(50,)),
"x_vals_3": np.random.uniform(low=1, high=750, size=(50,)),})

1) Я могу рассчитать это для каждого столбца в каждом DataFrame, используя scipy:

import pandas as pd
import numpy as np
from scipy.interpolate import interp1d

y = df_y_pts["y_pts_1"]
x = df_x_pts["x_pts_1"]
# Fit the interpolation on the original index and values
f = interp1d(x, y, kind='linear')

# Perform interpolation for values across the full desired index
f(x_val)

2) Или используя numpy:

x_pts = df_x_pts["x_pts_1"]
y_pts = df_y_pts["y_pts_1"]
x_vals = df_x_vals["x_vals_1"]
y_vals = np.interp(x_vals, x_pts, y_pts)
print(y_vals)

Каков разумный метод для выполнения sh этого во всех DataFrames, чтобы я получил один DataFrame, который выглядел бы как df_x_vals, за исключением того, что DataFrame состоит из всех интерполированных значений y?

...