Übung: Bereinigen von Wetterdaten zur Analyse von Raketenstartkriterien
Nachdem wir die Daten importiert haben, müssen wir eine Machine Learning-Methode anwenden, die als „Bereinigen der Daten“ bezeichnet wird. Wir nehmen Daten, die falsch oder unsauber aussehen, und bereinigen sie, indem wir den Wert ändern oder sie vollständig löschen. Im Folgenden sehen Sie gängige Beispiele für das Bereinigen von Daten:
- Sicherstellen, dass keine NULL-Werte enthalten sind
- Sicherstellen, dass alle Werte in einer Spalte identisch aussehen
Die Datenbereinigung wird durchgeführt, weil Computer verwirrt sind, wenn sie inkonsistente Daten untersuchen oder wenn viele NULL-Werte in den Daten enthalten sind.
Datenbereinigung
Der erste Schritt zum Bereinigen Ihrer Daten besteht darin, alle fehlenden Werte durch etwas zu ersetzen. Zum Ersetzen dieser Werte sind in der Regel Fachkenntnisse erforderlich. In diesem Fall nutzen Sie jedoch Ihr bestmögliches Urteilsvermögen. Einige Zeilen (denken Sie daran, dass Zeilen Tage darstellen) enthalten keine Wetter- oder Startdaten.
Zunächst verschaffen Sie sich einen Überblick über die Startdaten, indem Sie den folgenden Befehl in der .ipynb-Datei ausführen:
launch_data.info()
Aus 300 Zeilen fehlen in einigen Spalten Informationen:
RangeIndex: 300 entries, 0 to 299
Data columns (total 26 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Name 60 non-null object
1 Date 300 non-null datetime64[ns]
2 Time (East Coast) 59 non-null object
3 Location 300 non-null object
4 Crewed or Uncrewed 60 non-null object
5 Launched? 60 non-null object
6 High Temp 299 non-null float64
7 Low Temp 299 non-null float64
8 Ave Temp 299 non-null float64
9 Temp at Launch Time 59 non-null float64
10 Hist High Temp 299 non-null float64
11 Hist Low Temp 299 non-null float64
12 Hist Ave Temp 299 non-null float64
13 Precipitation at Launch Time 299 non-null float64
14 Hist Ave Precipitation 299 non-null float64
15 Wind Direction 299 non-null object
16 Max Wind Speed 299 non-null float64
17 Visibility 299 non-null float64
18 Wind Speed at Launch Time 59 non-null float64
19 Hist Ave Max Wind Speed 0 non-null float64
20 Hist Ave Visibility 0 non-null float64
21 Sea Level Pressure 299 non-null object
22 Hist Ave Sea Level Pressure 0 non-null float64
23 Day Length 298 non-null object
24 Condition 298 non-null object
25 Notes 3 non-null object
Sie sollten sehen, dass für Hist Ave Max Wind Speed
, Hist Ave Visibility
und Hist Ave Sea Level Pressure
keine Daten vorliegen.
Es ergibt Sinn, dass Wind Speed at Launch Time
, Temp at Launch Time
, Launched
, Crewed or Uncrewed
, Time
und Name
nur 60 Werte aufweisen, da die Daten nur 60 Raketenstarts enthalten. Die restlichen Daten beziehen sich auf die Tage vor und nach den Starts.
Im Folgenden werden einige Vorgehensweisen zum Bereinigen der Daten aufgeführt:
- Die Zeilen, die nicht
Y
in der SpalteLaunched
enthalten, beschreiben keinen Raketenstart, legen Sie alsoN
für fehlende Werte fest. - Für Zeilen, in denen Informationen dazu fehlen, ob die Rakete bemannt oder unbemannt war, können Sie von einer unbemannten Mission ausgehen. Es ist wahrscheinlicher, dass diese unbemannt waren, weil es weniger bemannte Missionen gab.
- Kennzeichnen Sie fehlende Werte zur Windrichtung mit
unknown
. - Bei fehlenden Wetterbedingungen können Sie von einem normalen Tag ausgehen und
fair
angeben. - Für jegliche andere Daten können Sie den Wert
0
verwenden.
Fügen Sie in die nächste Zelle den folgenden Code ein, und führen Sie diesen aus:
## To handle missing values, we will fill the missing values with appropriate values
launch_data['Launched?'].fillna('N',inplace=True)
launch_data['Crewed or Uncrewed'].fillna('Uncrewed',inplace=True)
launch_data['Wind Direction'].fillna('unknown',inplace=True)
launch_data['Condition'].fillna('Fair',inplace=True)
launch_data.fillna(0,inplace=True)
launch_data.head()
Versuchen Sie nochmal, launch_data.info()
auszuführen, um zu überprüfen, ob die Änderungen an den Daten übernommen wurden.
Hinweis
Sie ändern die Daten, die in der launch_data
-Variable gespeichert wurden, nicht die Daten, die in der Excel-Datei gespeichert werden. Wenn Sie feststellen, dass Sie Daten geändert oder entfernt haben, die Sie nicht ändern wollten, können Sie das Notebook erneut ausführen, um die ursprünglichen Daten wiederherzustellen.
Datenmanipulation
Da Berechnungen sich a, besten für numerische Eingaben eignen, konvertieren Sie den gesamten Text in Zahlen. Verwenden Sie beispielsweise 1
, wenn eine Rakete bemannt ist, und 0
, wenn eine Rakete unbemannt ist.
## As part of the data cleaning process, we have to convert text data to numerical because computers understand only numbers
label_encoder = preprocessing.LabelEncoder()
# Three columns have categorical text info, and we convert them to numbers
launch_data['Crewed or Uncrewed'] = label_encoder.fit_transform(launch_data['Crewed or Uncrewed'])
launch_data['Wind Direction'] = label_encoder.fit_transform(launch_data['Wind Direction'])
launch_data['Condition'] = label_encoder.fit_transform(launch_data['Condition'])
Als Nächstes überprüfen Sie die Daten nochmal, um sicherzustellen, dass sie bereinigt wurden.
launch_data.head()