Interpolacja jest łatwa w pandach za pomocą df.interpolate()
czy istnieje metoda w pandach, które z tą samą elegancją robią coś w stylu ekstrapolacji. Wiem, że moja ekstrapolacja jest dopasowana do wielomianu drugiego stopnia.ekstrapolacja pand z wielomianu
6
A
Odpowiedz
1
"Z tą samą elegancją" jest dość wysokim zamówieniem, ale można to zrobić. O ile mi wiadomo, musisz wyliczyć ekstrapolowane wartości ręcznie. Zauważ, że jest bardzo mało prawdopodobne, że wartości te będą bardzo znaczące, chyba że dane, na których pracujesz, faktycznie są zgodne z prawem formy interpolantu.
Na przykład, ponieważ poprosił o drugi stopień wielomianu dopasowanie:
import numpy as np
t = df["time"]
dat = df["data"]
p = np.poly1d(np.polyfit(t,data,2))
Teraz p (t) jest wartością najlepszego dopasowania wielomianu w czasie t.
0
Ekstrapolacja
Zobacz ten answer dla jak extrapolate wartości każdej kolumnie DataFrame
z 3rd order polynomial. A different order (e.g. 2nd order) polynomial może być łatwo użyty przez zmianę func()
.
Fragment z answer
# Function to curve fit to the data def func(x, a, b, c, d): return a * (x ** 3) + b * (x ** 2) + c * x + d # Initial parameter guess, just to kick off the optimization guess = (0.5, 0.5, 0.5, 0.5) # Create copy of data to remove NaNs for curve fitting fit_df = df.dropna() # Place to store function parameters for each column col_params = {} # Curve fit each column for col in fit_df.columns: # Get x & y x = fit_df.index.astype(float).values y = fit_df[col].values # Curve fit column and get curve parameters params = curve_fit(func, x, y, guess) # Store optimized parameters col_params[col] = params[0] # Extrapolate each column for col in df.columns: # Get the index values for NaNs in the column x = df[pd.isnull(df[col])].index.astype(float).values # Extrapolate those points with the fitted function df[col][x] = func(x, *col_params[col])
Być może trzeba będzie użyć 'scipy.interpolate.UnivariateSpline' który posiada opcję' ext'. – askewchan
Powiązane: [Wartości Extrapolate w Pandas DataFrame] (https://stakuprocessflow.com/questions/22491628/extrapolate-values-in-pandas-dataframe), ale prostszy przypadek, który mógł zostać rozwiązany inną metodą. – askewchan
Istnieje teraz odpowiedź na to pytanie (http://stackoverflow.com/a/35959909/2087463) ze szczegółowymi informacjami na temat wielomianowej ekstrapolacji. – tmthydvnprt