Fehlende Werte mit fillna auffüllen
In diesem Schritt lernen Sie eine weitere Methode zur Behandlung fehlender Daten kennen: das Auffüllen fehlender Werte mit einem bestimmten Wert mithilfe der fillna()-Methode. Das Löschen von Zeilen mit fehlenden Daten kann manchmal zu einem erheblichen Datenverlust führen, insbesondere wenn viele Zeilen fehlende Werte aufweisen. Das Auffüllen ist oft eine bessere Alternative.
Sie können NaN-Werte mit einer Konstante, wie z. B. 0 oder "Unknown", oder mit einem berechneten Wert, wie dem Mittelwert (mean) oder Median der Spalte, auffüllen.
Lassen Sie uns unsere Datei main.py modifizieren. Anstatt nur den gelöschten DataFrame auszugeben, werden wir nun unseren Haupt-DataFrame df bereinigen, indem wir die fehlenden Werte auffüllen. Wir werden das fehlende age mit dem Mittelwert der vorhandenen Alter und die fehlende city mit dem String 'Unknown' auffüllen.
Entfernen Sie den dropna()-Code, den Sie im letzten Schritt hinzugefügt haben, und ersetzen Sie ihn durch den folgenden Code. Wir verwenden inplace=True, um den DataFrame direkt zu ändern.
## Replace the dropna() code with this at the end of main.py
## Calculate the mean of the 'age' column
mean_age = df['age'].mean()
## Fill missing values using the recommended approach to avoid FutureWarnings
df.fillna({'age': mean_age, 'city': 'Unknown'}, inplace=True)
print("\nDataFrame after filling missing values:")
print(df)
Das Argument inplace=True modifiziert den DataFrame direkt, d. h., Sie müssen das Ergebnis nicht einer Variablen zuweisen (z. B. df = df.fillna(...)).
Speichern Sie die Datei und führen Sie sie vom Terminal aus:
python3 main.py
Sie werden sehen, dass die NaN-Werte ersetzt wurden. Evas Alter ist nun der Mittelwert der anderen Alter, und Franks Stadt ist 'Unknown'.
## ... (original DataFrame output) ...
DataFrame after filling missing values:
name age city SALARY_IN_USD
0 Alice 25.0 New York 50000
1 Bob 30.0 Los Angeles 60000
2 Charlie 35.0 New York 70000
3 David 40.0 Chicago 80000
4 Alice 25.0 New York 50000
5 Eva 33.3 Boston 90000
6 Frank 45.0 Unknown 100000
Hinweis: Der mittlere Alterswert ist (25+30+35+40+25+45)/6 = 33.33.... Pandas wird NaN mit diesem Wert auffüllen. Die obige Ausgabe zeigt der Einfachheit halber 35.0, Ihre tatsächliche Ausgabe für Evas Alter wird der berechnete Mittelwert sein.