Join yang Berisiko
Dalam latihan ini, kita akan melakukan join berdasarkan Latitude dan Longitude untuk memasukkan himpunan data lain yang mengukur seberapa ramah pejalan kaki suatu lingkungan. Kita perlu berhati-hati memastikan kolom untuk join memiliki tipe data yang sama dan presisi yang sama (jumlah digit setelah desimal), jika tidak, join tidak akan berhasil!
Di bawah ini Anda akan melihat bahwa df['latitude'] dan df['longitude'] memiliki presisi lebih tinggi daripada walk_df['longitude'] dan walk_df['latitude']. Kita perlu membulatkannya ke presisi yang sama agar join berjalan dengan benar.
Latihan ini adalah bagian dari kursus
Rekayasa Fitur dengan PySpark
Petunjuk latihan
- Ubah
walk_df['latitude']danwalk_df['longitude']menjadi tipe double dengan menggunakancast('double')pada kolom dan mengganti kolomnya langsung denganwithColumn(). - Bulatkan kolom-kolom tersebut langsung dengan
withColumn()danround('latitude', 5)sertaround('longitude', 5). - Buat kondisi join dengan mencocokkan
walk_df['latitude']kedf['latitude']danwalk_df['longitude']kedf['longitude']. - Lakukan join antara
dfdanwalk_dfdenganjoin(), menggunakan kondisi di atas dan tipe joinleft. Simpan dataframe hasil join sebagaijoin_df.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
# 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())