ตรวจสอบการ Join ที่ผิดพลาด
การ Join ที่ผิดพลาดอาจเกิดขึ้นโดยไม่มีข้อความแจ้งเตือน กล่าวคือโค้ดจะไม่แสดงข้อผิดพลาด แต่จะคืนค่าข้อมูลที่บิดเบี้ยวซึ่งมีจำนวนแถวมากหรือน้อยกว่าที่ตั้งใจไว้ มาดูกันว่าการ Join ที่ไม่ถูกต้องส่งผลเสียต่อชุดข้อมูลอย่างไรบ้าง
ในแบบฝึกหัดนี้ เราจะสำรวจสิ่งที่เกิดขึ้นเมื่อ Join dataframe สองตัวที่มีความแม่นยำของ key ไม่เท่ากัน แล้วเปรียบเทียบจำนวนระเบียนระหว่างการ Join ที่ถูกต้องกับการ Join ที่ผิดพลาด
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Feature Engineering with PySpark
คำแนะนำการฝึกหัด
- สร้างการ Join ระหว่าง
df_orig(dataframe ก่อนที่จะแก้ไขความแม่นยำ) กับwalk_dfโดยจับคู่ตามคอลัมน์longitudeและlatitudeในแต่ละ dataframe - นับจำนวนค่าที่หายไปโดยใช้
where()และisNull()บนdf['walkscore']และcorrect_join['walkscore']จะพบว่ามีค่าที่หายไปจำนวนมาก เนื่องจากประเภทข้อมูลและความแม่นยำไม่ตรงกัน - สร้างการ Join ระหว่าง
dfกับwalk_dfโดยจับคู่เฉพาะคอลัมน์longitudeเท่านั้น - นับจำนวนระเบียนด้วย
count()สำหรับfew_keys_dfและcorrect_join_dfจะพบว่ามีจำนวนระเบียนมากกว่าที่ควรจะเป็น เนื่องจากเงื่อนไขการจับคู่ไม่รัดกุมเพียงพอ
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# 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(____.____()))