誤った結合の検出
注意しないと、Join は静かに「おかしく」なることがあります。エラーは出ず、意図より多かったり少なかったりする壊れたデータが返ってくるのです。ここでは、誤った結合がどのようにデータセットを悪化させるかをいくつかの方法で確認します。
この例では、結合キーの精度が一致していない状態で2つのデータフレームを結合した場合に何が起こるかを見て、正しい結合と誤った結合でレコード件数を比較します。
この演習はコースの一部です
PySparkで学ぶ特徴量エンジニアリング
演習の手順
- 精度補正前のデータフレーム
df_origとwalk_dfの間で、それぞれのデータフレームのlongitudeとlatitudeをキーにして結合を作成します。 df['walkscore']とcorrect_join['walkscore']について、where()とisNull()を使って欠損値の数を数えます。データ型や精度が一致していないため、欠損が多いことに気づくはずです。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(____.____()))