檢查錯誤的 Join
如果不小心,Join 很可能在沒有報錯的情況下默默出問題,回傳被扭曲的資料,筆數比你預期的多或少。讓我們看看幾種錯誤的 Join 會如何讓你的資料集變糟。
在這個例子中,我們會示範當 Join key 的精度不同時把兩個 DataFrame 連接在一起會發生什麼事,並比較正確 Join 與錯誤 Join 的筆數差異。
本練習屬於課程
使用 PySpark 進行特徵工程
練習說明
- 建立
df_orig(精度尚未校正的 DataFrame)與walk_df的 Join,分別用各自的longitude與latitude來比對。 - 使用
where()、isNull()分別在df['walkscore']與correct_join['walkscore']上計算遺漏值的數量。你應該會注意到有很多遺漏值,因為資料型別與精度不相符。 - 建立
df與walk_df之間只用longitude比對的 Join。 - 使用
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(____.____()))