Aan de slagBegin gratis

Een riskante join

In deze oefening ga je joinen op Latitude en Longitude om een andere gegevensset toe te voegen die meet hoe wandelvriendelijk een buurt is. We moeten goed opletten dat onze join-kolommen hetzelfde gegevenstype hebben en dat we met dezelfde precisie werken (aantal cijfers na de komma), anders werkt de join niet!

Hieronder zie je dat df['latitude'] en df['longitude'] een hogere precisie hebben dan walk_df['longitude'] en walk_df['latitude']. We moeten ze naar dezelfde precisie afronden zodat de join correct werkt.

Deze oefening maakt deel uit van de cursus

Feature Engineering met PySpark

Bekijk cursus

Oefeninstructies

  • Zet walk_df['latitude'] en walk_df['longitude'] om naar type double door cast('double') op de kolom te gebruiken en de kolom ter plekke te vervangen met withColumn().
  • Rond de kolommen ter plekke af met withColumn() en round('latitude', 5) en round('longitude', 5).
  • Maak de join-voorwaarde waarin walk_df['latitude'] gelijk is aan df['latitude'] en walk_df['longitude'] gelijk is aan df['longitude'].
  • Join df en walk_df met join(), gebruik de bovenstaande voorwaarde en het join-type left. Sla de gejoinde DataFrame op als join_df.

Interactieve oefening met praktijkervaring

Probeer deze oefening door deze voorbeeldcode aan te vullen.

# 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 bewerken en uitvoeren