MulaiMulai sekarang secara gratis

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

Lihat Kursus

Petunjuk latihan

  • Ubah walk_df['latitude'] dan walk_df['longitude'] menjadi tipe double dengan menggunakan cast('double') pada kolom dan mengganti kolomnya langsung dengan withColumn().
  • Bulatkan kolom-kolom tersebut langsung dengan withColumn() dan round('latitude', 5) serta round('longitude', 5).
  • Buat kondisi join dengan mencocokkan walk_df['latitude'] ke df['latitude'] dan walk_df['longitude'] ke df['longitude'].
  • Lakukan join antara df dan walk_df dengan join(), menggunakan kondisi di atas dan tipe join left. Simpan dataframe hasil join sebagai join_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())
Edit dan Jalankan Kode