Kiểm tra các phép Join lỗi
Nếu không cẩn thận, các phép join có thể âm thầm gây lỗi: chúng không báo lỗi mà trả về dữ liệu bị lệch, nhiều hơn hoặc ít hơn so với dự định. Hãy xem một vài cách mà việc join sai có thể làm hỏng tập dữ liệu của bạn.
Trong ví dụ này, chúng ta sẽ xem điều gì xảy ra khi bạn join hai dataframe mà khóa join không có cùng độ chính xác, và so sánh số lượng bản ghi giữa phép join đúng và phép join sai.
Bài tập này là một phần của khóa học
Feature Engineering với PySpark
Hướng dẫn bài tập
- Tạo một phép join giữa
df_orig(dataframe trước khi được sửa độ chính xác) vàwalk_dfsao cho khớp theolongitudevàlatitudeở mỗi dataframe tương ứng. - Đếm số lượng giá trị thiếu bằng
where()isNull()trêndf['walkscore']vàcorrect_join['walkscore']. Bạn sẽ thấy có rất nhiều giá trị thiếu vì kiểu dữ liệu và độ chính xác không khớp. - Tạo một phép join giữa
dfvàwalk_dfchỉ khớp theolongitude. - Đếm số lượng bản ghi với
count():few_keys_dfvàcorrect_join_df. Bạn sẽ thấy số lượng lớn hơn nhiều vì chúng ta chưa ràng buộc điều kiện khớp một cách chính xác.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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(____.____()))