Ich habe zwei DataFrames:
ich möchte für jede Zeile von "df" eine Lineare Regression mit df2 als Basis (X-Achse) erstellen. Also ähnlich wie hier:
Ich möchte dann die Slope getrennt nach "m" und "n" in separate Spalten in einem neuen DataFrame einfügen, genau wie R².
Mein Ansatz wäre gewesen:
Das resultiert aber in einem "TypeError: can only concatenate str (not "float") to str". Mag das daran liegen, dass in der ersten Spalte von "df" noch Bezeichnungen für die Spalte stehen? Also neben "0.4238227" steht noch ein "Stadt A" oder sowas. Dieser String ist aber wichtig und muss in df3 übertragen werden.
Hat einer eine Idee, wie ich das anstellen könnte?
Code:
import numpy as np
from sklearn.metrics import mean_squared_error, r2_score
from sklearn.linear_model import LinearRegression
np.random.seed(12)
import pandas as pd
df = pd.DataFrame(np.random.randint(0,100,size=(3, 4)), columns=list('ABCD'), index=['Tokyo', 'New York', 'Ontario'])
df2 = pd.DataFrame([{'A': -4, 'B': -3, 'C': -2, 'D': 8}])
ich möchte für jede Zeile von "df" eine Lineare Regression mit df2 als Basis (X-Achse) erstellen. Also ähnlich wie hier:
Ich möchte dann die Slope getrennt nach "m" und "n" in separate Spalten in einem neuen DataFrame einfügen, genau wie R².
Mein Ansatz wäre gewesen:
Code:
for index, row in df.iterrows():
reg = np.polyfit(df2, row, 1)
predict = np.poly1d(reg) # Slope and intercept
trend = np.polyval(reg, df2)
std = row() # Standard deviation
r2 = np.round(r2_score(row, predict(df2)), 5) #R-squared
r2string = str(r2)
Das resultiert aber in einem "TypeError: can only concatenate str (not "float") to str". Mag das daran liegen, dass in der ersten Spalte von "df" noch Bezeichnungen für die Spalte stehen? Also neben "0.4238227" steht noch ein "Stadt A" oder sowas. Dieser String ist aber wichtig und muss in df3 übertragen werden.
Hat einer eine Idee, wie ich das anstellen könnte?
Zuletzt bearbeitet: