잘못된 조인 확인하기
주의하지 않으면 조인이 조용히 잘못될 수 있어요. 즉 에러는 나지 않지만, 의도와 다르게 데이터가 뒤틀려 더 많거나 적은 레코드를 반환할 수 있습니다. 잘못된 조인이 데이터셋을 어떻게 악화시키는지 몇 가지 사례를 살펴보겠습니다.
이 예제에서는 조인 키의 정밀도가 서로 다를 때 두 데이터프레임을 조인하면 어떤 일이 일어나는지 보고, 올바른 조인과 잘못된 조인의 레코드 수를 비교해 보겠습니다.
이 연습은 강의의 일부입니다
PySpark로 하는 Feature Engineering
연습 안내
- 정밀도를 수정하기 전의 데이터프레임인
df_orig와walk_df사이에, 각각의 데이터프레임에서longitude와latitude가 일치하도록 조인을 만드세요. df['walkscore']와correct_join['walkscore']에서where()와isNull()을 사용해 결측값의 개수를 세세요. 데이터 타입과 정밀도가 맞지 않아 결측값이 매우 많다는 점을 확인하실 수 있을 거예요.df와walk_df사이에longitude만 일치하도록 조인을 만드세요.few_keys_df와correct_join_df에 대해count()로 레코드 수를 세세요. 매칭을 제대로 제한하지 않아 값이 훨씬 더 많아진다는 점을 확인하실 수 있을 거예요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# 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(____.____()))