CommencezCommencez gratuitement

Une jointure à risque

Dans cet exercice, nous allons joindre sur la latitude et la longitude pour intégrer un autre jeu de données qui mesure à quel point un quartier est propice à la marche. Nous devons nous assurer que les colonnes de jointure sont du même type de données et qu'elles ont la même précision (le 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.

Cette activité fait partie du cours

Ingénierie des caractéristiques avec PySpark

Voir le cours

Instructions de l’exercice

  • Convertissez walk_df['latitude'] et walk_df['longitude'] au type double en utilisant cast('double') sur la colonne et en la remplaçant sur place avec withColumn().
  • Arrondissez les colonnes sur place avec withColumn() et round('latitude', 5) ainsi que round('longitude', 5).
  • Créez la condition de jointure où walk_df['latitude'] correspond à df['latitude'] et walk_df['longitude'] correspond à 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