LoslegenKostenlos starten

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>
Kurs ansehen

Übungsanweisungen

  • Erstelle einen Join zwischen df_orig, dem DataFrame, bevor seine Präzision korrigiert wurde, und walk_df, der auf longitude und latitude in den jeweiligen DataFrames matched.
  • Zähle die Anzahl fehlender Werte mit where() und isNull() auf df['walkscore'] und correct_join['walkscore']. Du solltest feststellen, dass viele Werte fehlen, weil unsere Datentypen und die Präzision nicht übereinstimmen.
  • Erstelle einen Join zwischen df und walk_df, der nur auf longitude matched.
  • Zähle die Anzahl der Zeilen mit count(): few_keys_df und correct_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(____.____()))
Code bearbeiten und ausführen