Zacznij terazZacznij za darmo

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

Zobacz kurs

Instrukcje do ćwiczenia

  • Przekonwertuj walk_df['latitude'] i walk_df['longitude'] na typ double, używając cast('double') na kolumnie i zastępując ją w miejscu za pomocą withColumn().
  • Zaokrąglij kolumny w miejscu, korzystając z withColumn() oraz round('latitude', 5) i round('longitude', 5).
  • Utwórz warunek złączenia: walk_df['latitude'] pasuje do df['latitude'], a walk_df['longitude'] pasuje do df['longitude'].
  • Połącz df i walk_df za pomocą join(), używając powyższego warunku i typu złączenia left. Zapisz wynikową ramkę danych jako join_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())
Edytuj i uruchom kod