開始使用免費開始

檢查錯誤的 Join

如果不小心,Join 很可能在沒有報錯的情況下默默出問題,回傳被扭曲的資料,筆數比你預期的多或少。讓我們看看幾種錯誤的 Join 會如何讓你的資料集變糟。

在這個例子中,我們會示範當 Join key 的精度不同時把兩個 DataFrame 連接在一起會發生什麼事,並比較正確 Join 與錯誤 Join 的筆數差異。

本練習屬於課程

使用 PySpark 進行特徵工程

檢視課程

練習說明

  • 建立 df_orig(精度尚未校正的 DataFrame)與 walk_df 的 Join,分別用各自的 longitudelatitude 來比對。
  • 使用 where()isNull() 分別在 df['walkscore']correct_join['walkscore'] 上計算遺漏值的數量。你應該會注意到有很多遺漏值,因為資料型別與精度不相符。
  • 建立 dfwalk_df 之間只用 longitude 比對的 Join。
  • 使用 count() 計算 few_keys_dfcorrect_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(____.____()))
編輯並執行程式碼