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>Instructions de l’exercice
- Créez une jointure entre
df_orig, le dataframe avant la correction de sa précision, etwalk_dfen faisant correspondrelongitudeetlatitudedans les dataframes respectifs. - Comptez le nombre de valeurs manquantes avec
where()etisNull()surdf['walkscore']etcorrect_join['walkscore']. Vous devriez constater de nombreuses valeurs manquantes, car nos types et notre précision ne correspondent pas. - Créez une jointure entre
dfetwalk_dfqui ne correspond que surlongitude. - Comptez le nombre d’enregistrements avec
count():few_keys_dfetcorrect_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(____.____()))