Ein Fehler, auf den Sie bei der Verwendung von Pandas stoßen können, ist:
KeyError: "['Label'] not found in axis"
Dieser Fehler tritt normalerweise auf, wenn Sie versuchen, eine Spalte aus …
Ein Fehler, auf den Sie bei der Verwendung von Python stoßen können, ist:
ValueError: Pandas data cast to numpy dtype of object. Check input data with
np.asarray(data).
Dieser Fehler tritt auf, wenn Sie versuchen, ein Regressionsmodell in Python anzupassen, und kategoriale Variablen nicht zuerst in Dummy-Variablen konvertieren, bevor Sie das Modell anpassen.
Das folgende Beispiel zeigt, wie dieser Fehler in der Praxis behoben werden kann.
Angenommen, wir haben den folgenden Pandas DataFrame:
import pandas as pd
#Dataframe erstellen
df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
'assists': [5, 7, 7, 9, 12, 9, 9, 4],
'rebounds': [11, 8, 10, 6, 6, 5, 9, 12],
'points': [14, 19, 8, 12, 17, 19, 22, 25]})
#Dataframe anzeigen
df
team assists rebounds points
0 A 5 11 14
1 A 7 8 19
2 A 7 10 8
3 A 9 6 12
4 B 12 6 17
5 B 9 5 19
6 B 9 9 22
7 B 4 12 25
Nehmen wir nun an, wir versuchen, ein multiples lineares Regressionsmodell mit Team, Assists und Rebounds als Prädiktorvariablen und Punkten als Antwortvariable anzupassen :
import statsmodels.api as sm
#Antwortvariable definieren
y = df['points']
#Prädiktorvariablen definieren
x = df[['team', 'assists', 'rebounds']]
# Konstante zu Prädiktorvariablen hinzufügen
x = sm.add_constant(x)
#Versuch, das Regressionsmodell anzupassen
model = sm.OLS(y, x).fit()
ValueError: Pandas data cast to numpy dtype of object. Check input data with
np.asarray(data).
Wir erhalten einen Fehler, weil die Variable „Team“ kategorial ist und wir sie vor der Anpassung des Regressionsmodells nicht in eine Dummy-Variable umgewandelt haben.
Der einfachste Weg, diesen Fehler zu beheben, besteht darin, die Variable „Team“ mithilfe der Funktion pandas.get_dummies() in eine Dummy-Variable umzuwandeln.
Hinweis : Schauen Sie sich dieses Tutorial an, um eine kurze Auffrischung zu Dummy-Variablen in Regressionsmodellen zu erhalten.
Der folgende Code zeigt, wie man „Team“ in eine Dummy-Variable umwandelt:
import pandas as pd
#Dataframe erstellen
df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
'assists': [5, 7, 7, 9, 12, 9, 9, 4],
'rebounds': [11, 8, 10, 6, 6, 5, 9, 12],
'points': [14, 19, 8, 12, 17, 19, 22, 25]})
#Konvertieren Sie "Team" in eine Dummy-Variable
df = pd.get_dummies(df, columns=['team'], drop_first=True)
#aktualisierten DataFrame anzeigen
df
assists rebounds points team_B
0 5 11 14 0
1 7 8 19 0
2 7 10 8 0
3 9 6 12 0
4 12 6 17 1
5 9 5 19 1
6 9 9 22 1
7 4 12 25 1
Die Werte in der Spalte „Team“ wurden von „A“ und „B“ in 0 und 1 umgewandelt.
Wir können jetzt das multiple lineare Regressionsmodell mit der neuen Variablen „team_B“ anpassen:
import statsmodels.api as sm
#Antwortvariable definieren
y = df['points']
#Prädiktorvariablen definieren
x = df[['team_B', 'assists', 'rebounds']]
# Konstante zu Prädiktorvariablen hinzufügen
x = sm.add_constant(x)
#fit-Regressionsmodell
model = sm.OLS(y, x).fit()
#Zusammenfassung der Modellanpassung anzeigen
print(model.summary())
OLS Regression Results
==============================================================================
Dep. Variable: points R-squared: 0.701
Model: OLS Adj. R-squared: 0.476
Method: Least Squares F-statistic: 3.119
Date: Thu, 11 Nov 2021 Prob (F-statistic): 0.150
Time: 14:49:53 Log-Likelihood: -19.637
No. Observations: 8 AIC: 47.27
Df Residuals: 4 BIC: 47.59
Df Model: 3
Covariance Type: nonrobust
==============================================================================
coef std err t P>|t| [0.025 0.975]
------------------------------------------------------------------------------
const 27.1891 17.058 1.594 0.186 -20.171 74.549
team_B 9.1288 3.032 3.010 0.040 0.709 17.548
assists -1.3445 1.148 -1.171 0.307 -4.532 1.843
rebounds -0.5174 1.099 -0.471 0.662 -3.569 2.534
==============================================================================
Omnibus: 0.691 Durbin-Watson: 3.075
Prob(Omnibus): 0.708 Jarque-Bera (JB): 0.145
Skew: 0.294 Prob(JB): 0.930
Kurtosis: 2.698 Cond. No. 140.
==============================================================================
Beachten Sie, dass wir das Regressionsmodell diesmal ohne Fehler anpassen können.
Hinweis : Die vollständige Dokumentation für die ols()-Funktion aus der statsmodels-Bibliothek finden Sie hier .
Die folgenden Tutorials erklären, wie Sie andere häufige Fehler in Python beheben:
So beheben Sie KeyError in Pandas
Behebung: ValueError: Float NaN kann nicht in Integer konvertiert werden
Behebung: ValueError: Operanden konnten nicht zusammen mit Shapes übertragen werden
Ein Fehler, auf den Sie bei der Verwendung von Pandas stoßen können, ist:
KeyError: "['Label'] not found in axis"
Dieser Fehler tritt normalerweise auf, wenn Sie versuchen, eine Spalte aus …
Ein Fehler, auf den Sie bei der Verwendung von Pandas stoßen können, ist:
ValueError: columns overlap but no suffix specified: Index(['column'], dtype='object')
Dieser Fehler tritt auf, wenn Sie …