Un Join Periculos
În acest exercițiu, vom realiza un join după Latitudine și Longitudine pentru a integra un alt set de date care măsoară cât de prietenoasă pentru pietoni este o anumită zonă. Va trebui să fim atenți ca și coloanele de join să aibă același tip de date și aceeași precizie (număr de zecimale), altfel join-ul nu va funcționa!
Vei observa mai jos că df['latitude'] și df['longitude'] au o precizie mai mare decât walk_df['longitude'] și walk_df['latitude'] — va trebui să le rotunjim la aceeași precizie pentru ca join-ul să funcționeze corect.
Acest exercițiu face parte din cursul
Feature Engineering cu PySpark
Instrucțiuni pentru exercițiu
- Convertește
walk_df['latitude']șiwalk_df['longitude']la tipul double folosindcast('double')pe coloană și înlocuind coloana cuwithColumn(). - Rotunjește coloanele în loc cu
withColumn()șiround('latitude', 5), respectivround('longitude', 5). - Creează condiția de join în care
walk_df['latitude']corespunde cudf['latitude']șiwalk_df['longitude']corespunde cudf['longitude']. - Unește
dfșiwalk_dfcujoin(), folosind condiția de mai sus și tipul de joinleft. Salvează dataframe-ul rezultat cajoin_df.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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())