Auf fehlerhafte Joins prüfen
Joins können unbemerkt schiefgehen, wenn wir nicht aufpassen. Das heißt, sie werfen keinen Fehler, liefern aber verfälschte Ergebnisse mit mehr oder weniger Daten, als du erwartet hast. Schauen wir uns ein paar Möglichkeiten an, wie falsches Joinen deinen Datensatz verschlechtern kann.
In diesem Beispiel sehen wir, was passiert, wenn du zwei DataFrames verbindest, deren Join-Schlüssel nicht die gleiche Präzision haben, und vergleichen die Anzahl der Zeilen zwischen dem korrekten und dem falschen Join.
Diese Übung ist Teil des Kurses
<Kurs>Feature Engineering mit PySpark</Kurs>Übungsanweisungen
- Erstelle einen Join zwischen
df_orig, dem DataFrame, bevor seine Präzision korrigiert wurde, undwalk_df, der auflongitudeundlatitudein den jeweiligen DataFrames matched. - Zähle die Anzahl fehlender Werte mit
where()undisNull()aufdf['walkscore']undcorrect_join['walkscore']. Du solltest feststellen, dass viele Werte fehlen, weil unsere Datentypen und die Präzision nicht übereinstimmen. - Erstelle einen Join zwischen
dfundwalk_df, der nur auflongitudematched. - Zähle die Anzahl der Zeilen mit
count():few_keys_dfundcorrect_join_df. Du solltest feststellen, dass es deutlich mehr Werte gibt, da wir unser Matching nicht korrekt eingeschränkt haben.
Interaktive praktische Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
# Join on mismatched keys precision
wrong_prec_cond = [____ == ____, ____ == ____]
wrong_prec_df = ____.join(____, on=wrong_prec_cond, how='left')
# Compare bad join to the correct one
print(wrong_prec_df.____(____.____()).count())
print(correct_join_df.____(____.____).count())
# Create a join on too few keys
few_keys_cond = [____ == ____]
few_keys_df = ____.join(____, on=few_keys_cond, how='left')
# Compare bad join to the correct one
print("Record Count of the Too Few Keys Join Example: " + str(____.____()))
print("Record Count of the Correct Join Example: " + str(____.____()))