CommencerCommencez gratuitement

Détecter les mauvaises jointures

Les jointures peuvent mal se passer sans bruit si vous n’y prenez pas garde : elles ne lèveront pas d’erreur, mais renverront des données déformées, avec plus ou moins d’enregistrements que prévu. Voyons quelques façons dont une jointure incorrecte peut détériorer votre jeu de données.

Dans cet exemple, nous allons voir ce qui se passe si vous joignez deux dataframes lorsque les clés de jointure n’ont pas la même précision, puis comparer le nombre d’enregistrements entre la jointure correcte et l’incorrecte.

Cet exercice fait partie du cours

<cours>Feature Engineering avec PySpark</cours>
Voir le cours

Instructions de l’exercice

  • Créez une jointure entre df_orig, le dataframe avant la correction de sa précision, et walk_df en faisant correspondre longitude et latitude dans les dataframes respectifs.
  • Comptez le nombre de valeurs manquantes avec where() et isNull() sur df['walkscore'] et correct_join['walkscore']. Vous devriez constater de nombreuses valeurs manquantes, car nos types et notre précision ne correspondent pas.
  • Créez une jointure entre df et walk_df qui ne correspond que sur longitude.
  • Comptez le nombre d’enregistrements avec count() : few_keys_df et correct_join_df. Vous devriez constater qu’il y a beaucoup plus de valeurs, car nous n’avons pas correctement contraint notre correspondance.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# 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(____.____()))
Modifier et exécuter le code