Un join pericoloso
In questo esercizio effettueremo un join su latitudine e longitudine per aggiungere un altro insieme di dati che misura quanto un quartiere sia adatto a essere girato a piedi. Dovremo fare attenzione a garantire che le colonne di join abbiano lo stesso tipo di dato e che stiamo usando la stessa precisione (numero di cifre dopo la virgola), altrimenti il join non funzionerà!
Qui sotto noterai che df['latitude'] e df['longitude'] hanno una precisione maggiore rispetto a walk_df['longitude'] e walk_df['latitude']: dovremo arrotondarle alla stessa precisione perché il join funzioni correttamente.
Questo esercizio fa parte del corso
Feature Engineering con PySpark
Istruzioni dell'esercizio
- Converti
walk_df['latitude']ewalk_df['longitude']al tipo double usandocast('double')sulla colonna e sostituendo la colonna in place conwithColumn(). - Arrotonda le colonne in place con
withColumn()eround('latitude', 5)eround('longitude', 5). - Crea la condizione di join in cui
walk_df['latitude']corrisponde adf['latitude']ewalk_df['longitude']corrisponde adf['longitude']. - Esegui il join tra
dfewalk_dfconjoin(), usando la condizione sopra e il tipo di joinleft. Salva il dataframe risultante comejoin_df.
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
# 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())