Controleren op verkeerde joins
Joins kunnen stilletjes misgaan als je niet oplet: er verschijnt geen foutmelding, maar je krijgt verminkte data met meer of juist minder rijen dan je bedoelde. Laten we kijken naar een paar manieren waarop een onjuiste join je gegevensset kan verslechteren.
In dit voorbeeld bekijken we wat er gebeurt als je twee dataframes joinet terwijl de join-sleutels niet dezelfde precisie hebben, en vergelijken we het aantal records tussen de correcte en de onjuiste join.
Deze oefening maakt deel uit van de cursus
Feature Engineering met PySpark
Oefeninstructies
- Maak een join tussen
df_orig, het dataframe voordat de precisie was gecorrigeerd, enwalk_dfdie matcht oplongitudeenlatitudein de respectievelijke dataframes. - Tel het aantal ontbrekende waarden met
where()enisNull()opdf['walkscore']encorrect_join['walkscore']. Je zult merken dat er veel missende waarden zijn omdat onze datatypes en precisie niet overeenkomen. - Maak een join tussen
dfenwalk_dfdie alleen matcht oplongitude. - Tel het aantal records met
count():few_keys_dfencorrect_join_df. Je zult merken dat er veel meer waarden zijn omdat we onze matching niet goed hebben ingeperkt.
Interactieve oefening met praktijkervaring
Probeer deze oefening door deze voorbeeldcode aan te vullen.
# 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(____.____()))