Bắt đầu ngayBắt đầu miễn phí

Một phép Join dễ sai sót

Trong bài tập này, chúng ta sẽ join theo Latitude và Longitude để bổ sung một tập dữ liệu khác đo mức độ thân thiện với người đi bộ của khu dân cư. Bạn cần cẩn thận để đảm bảo các cột dùng để join có cùng kiểu dữ liệu và cùng độ chính xác (số chữ số sau dấu thập phân), nếu không phép join sẽ không hoạt động!

Bên dưới, bạn sẽ thấy df['latitude']df['longitude'] có độ chính xác cao hơn walk_df['longitude']walk_df['latitude']; chúng ta cần làm tròn về cùng độ chính xác để phép join hoạt động đúng.

Bài tập này là một phần của khóa học

Feature Engineering với PySpark

Xem khóa học

Hướng dẫn bài tập

  • Chuyển walk_df['latitude']walk_df['longitude'] sang kiểu double bằng cách dùng cast('double') trên cột và thay thế cột tại chỗ với withColumn().
  • Làm tròn các cột tại chỗ với withColumn()round('latitude', 5)round('longitude', 5).
  • Tạo điều kiện join sao cho walk_df['latitude'] khớp với df['latitude']walk_df['longitude'] khớp với df['longitude'].
  • Join dfwalk_df với join(), dùng điều kiện ở trên và kiểu join left. Lưu dataframe sau khi join là join_df.

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

# 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())
Chỉnh sửa và Chạy Mã