Ryzykowne złączenie
W tym ćwiczeniu połączymy dane na podstawie szerokości i długości geograficznej, aby dołączyć kolejny zbiór danych zawierający informacje o tym, jak przyjazna pieszym jest dana dzielnica. Trzeba uważać, żeby kolumny użyte do złączenia miały ten sam typ danych oraz tę samą precyzję (liczbę miejsc po przecinku) – inaczej złączenie nie zadziała!
Poniżej zobaczysz, że df['latitude'] i df['longitude'] mają wyższą precyzję niż walk_df['longitude'] i walk_df['latitude']. Należy je zaokrąglić do tej samej precyzji, aby złączenie przebiegło poprawnie.
To ćwiczenie jest częścią kursu
Inżynieria cech z PySpark
Instrukcje do ćwiczenia
- Przekonwertuj
walk_df['latitude']iwalk_df['longitude']na typ double, używająccast('double')na kolumnie i zastępując ją w miejscu za pomocąwithColumn(). - Zaokrąglij kolumny w miejscu, korzystając z
withColumn()orazround('latitude', 5)iround('longitude', 5). - Utwórz warunek złączenia:
walk_df['latitude']pasuje dodf['latitude'], awalk_df['longitude']pasuje dodf['longitude']. - Połącz
dfiwalk_dfza pomocąjoin(), używając powyższego warunku i typu złączenialeft. Zapisz wynikową ramkę danych jakojoin_df.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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())