始める無料で始める

誤った結合の検出

注意しないと、Join は静かに「おかしく」なることがあります。エラーは出ず、意図より多かったり少なかったりする壊れたデータが返ってくるのです。ここでは、誤った結合がどのようにデータセットを悪化させるかをいくつかの方法で確認します。

この例では、結合キーの精度が一致していない状態で2つのデータフレームを結合した場合に何が起こるかを見て、正しい結合と誤った結合でレコード件数を比較します。

この演習はコースの一部です

PySparkで学ぶ特徴量エンジニアリング

コースを見る

演習の手順

  • 精度補正前のデータフレーム df_origwalk_df の間で、それぞれのデータフレームの longitudelatitude をキーにして結合を作成します。
  • df['walkscore']correct_join['walkscore'] について、where()isNull() を使って欠損値の数を数えます。データ型や精度が一致していないため、欠損が多いことに気づくはずです。
  • dfwalk_df の間で、longitude のみをキーにした結合を作成します。
  • 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(____.____()))
コードを編集して実行