LoslegenKostenlos starten

Ein riskanter Join

In dieser Übung verknüpfen wir über Latitude und Longitude, um einen weiteren Datensatz hinzuzufügen, der misst, wie fußgängerfreundlich ein Viertel ist. Dabei müssen wir darauf achten, dass die Join-Spalten denselben Datentyp haben und mit derselben Genauigkeit (Anzahl der Nachkommastellen) verglichen werden – sonst funktioniert der Join nicht!

Unten siehst du, dass df['latitude'] und df['longitude'] eine höhere Genauigkeit haben als walk_df['longitude'] und walk_df['latitude']. Wir müssen sie auf dieselbe Genauigkeit runden, damit der Join korrekt funktioniert.

Diese Übung ist Teil des Kurses

<Kurs>Feature Engineering mit PySpark</Kurs>
Kurs ansehen

Übungsanweisungen

  • Wandle walk_df['latitude'] und walk_df['longitude'] in den Typ double um, indem du cast('double') auf die Spalte anwendest und die Spalte mit withColumn() direkt ersetzt.
  • Runde die Spalten mit withColumn() sowie round('latitude', 5) und round('longitude', 5) in place.
  • Erstelle die Join-Bedingung, dass walk_df['latitude'] zu df['latitude'] passt und walk_df['longitude'] zu df['longitude'] passt.
  • Führe df und walk_df mit join() zusammen, verwende die oben definierte Bedingung und den Join-Typ left. Speichere das Ergebnis-DataFrame als join_df.

Interaktive praktische Übung

Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.

# Cast data types
walk_df = ____.withColumn('longitude', ____.cast('double'))
walk_df = ____.withColumn(____, ____.cast('double'))

# Round precision
df = df.withColumn('longitude', round(____, 5))
df = df.withColumn(____, round(____, 5))

# Create join condition
condition = [____ == ____, ____ == ____]

# Join the dataframes together
join_df = ____.join(____, on=____, how=____)
# Count non-null records from new field
print(join_df.where(~join_df['walkscore'].isNull()).count())
Code bearbeiten und ausführen