Wykrywanie błędnych złączeń
Złączenia mogą cicho zawodzić – nie zgłaszają błędu, ale zwracają zniekształcone dane z większą lub mniejszą liczbą rekordów, niż oczekiwano. Przyjrzyjmy się kilku sytuacjom, w których nieprawidłowe złączenie psuje zbiór danych.
W tym ćwiczeniu sprawdzisz, co się dzieje, gdy łączysz dwie ramki danych o różnej precyzji kluczy złączenia, i porównasz liczbę rekordów w poprawnym oraz niepoprawnym złączeniu.
To ćwiczenie jest częścią kursu
Inżynieria cech z PySpark
Instrukcje do ćwiczenia
- Utwórz złączenie między
df_orig– ramką danych przed korektą precyzji – awalk_df, dopasowując rekordy po kolumnachlongitudeilatitudew odpowiednich ramkach. - Zlicz brakujące wartości za pomocą
where()iisNull()nadf['walkscore']orazcorrect_join['walkscore']. Zauważysz wiele brakujących wartości, ponieważ typy danych i precyzja nie są zgodne. - Utwórz złączenie między
dfawalk_df, dopasowując rekordy wyłącznie po kolumnielongitude. - Zlicz rekordy za pomocą
count()dlafew_keys_dficorrect_join_df. Zauważysz znacznie więcej rekordów, ponieważ warunek dopasowania nie jest wystarczająco ograniczający.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# Join on mismatched keys precision
wrong_prec_cond = [____ == ____, ____ == ____]
wrong_prec_df = ____.join(____, on=wrong_prec_cond, how='left')
# Compare bad join to the correct one
print(wrong_prec_df.____(____.____()).count())
print(correct_join_df.____(____.____).count())
# Create a join on too few keys
few_keys_cond = [____ == ____]
few_keys_df = ____.join(____, on=few_keys_cond, how='left')
# Compare bad join to the correct one
print("Record Count of the Too Few Keys Join Example: " + str(____.____()))
print("Record Count of the Correct Join Example: " + str(____.____()))