Nebezpečný join
V tomto cvičení budeme joinovat podle zeměpisné šířky a délky, abychom přidali další dataset měřící, jak je daná čtvrť přívětivá pro pěší. Musíme si dát pozor na to, aby joinované sloupce měly stejný datový typ a stejnou přesnost (počet desetinných míst) – jinak join nebude fungovat!
Níže zjistíš, že df['latitude'] a df['longitude'] mají vyšší přesnost než walk_df['longitude'] a walk_df['latitude']. Budeme je muset zaokrouhlit na stejný počet desetinných míst, aby join proběhl správně.
Toto cvičení je součástí kurzu
Feature Engineering with PySpark
Pokyny k cvičení
- Převeď
walk_df['latitude']awalk_df['longitude']na typ double pomocícast('double')a nahraď sloupce na místě pomocíwithColumn(). - Zaokrouhli sloupce na místě pomocí
withColumn()a funkcíround('latitude', 5)around('longitude', 5). - Vytvoř podmínku joinu tak, aby
walk_df['latitude']odpovídaldf['latitude']awalk_df['longitude']odpovídaldf['longitude']. - Spoj
dfawalk_dfpomocíjoin()s výše uvedenou podmínkou a typem joinuleft. Výsledný dataframe ulož jakojoin_df.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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())