CommencerCommencez gratuitement

Une jointure délicate

Dans cet exercice, nous allons effectuer une jointure sur la latitude et la longitude pour ajouter un autre jeu de données qui mesure à quel point un quartier est agréable pour se déplacer à pied. Nous devons nous assurer que les colonnes de jointure ont le même type de données et la même précision (nombre de chiffres après la virgule), sinon la jointure ne fonctionnera pas !

Ci-dessous, vous verrez que df['latitude'] et df['longitude'] ont une précision plus élevée que walk_df['longitude'] et walk_df['latitude']. Nous devrons les arrondir à la même précision pour que la jointure fonctionne correctement.

Cet exercice fait partie du cours

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

Instructions de l’exercice

  • Convertissez walk_df['latitude'] et walk_df['longitude'] en type double en utilisant cast('double') sur la colonne et en remplaçant la colonne sur place avec withColumn().
  • Arrondissez les colonnes sur place avec withColumn() et round('latitude', 5) et round('longitude', 5).
  • Créez la condition de jointure : walk_df['latitude'] correspondant à df['latitude'] et walk_df['longitude'] correspondant à df['longitude'].
  • Joignez df et walk_df avec join(), en utilisant la condition ci-dessus et le type de jointure left. Enregistrez le DataFrame résultant sous join_df.

Exercice interactif pratique

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

# Cast data types
walk_df = ____.withColumn('longitude', ____.cast('double'))
walk_df = ____.withColumn(____, ____.cast('double'))

# Round precision
df = df.withColumn('longitude', round(____, 5))
df = df.withColumn(____, round(____, 5))

# Create join condition
condition = [____ == ____, ____ == ____]

# Join the dataframes together
join_df = ____.join(____, on=____, how=____)
# Count non-null records from new field
print(join_df.where(~join_df['walkscore'].isNull()).count())
Modifier et exécuter le code