Übung: Bereinigen von Wetterdaten zur Analyse von Raketenstartkriterien

Abgeschlossen

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 Spalte Launched enthalten, beschreiben keinen Raketenstart, legen Sie also N 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()