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'] và df['longitude'] có độ chính xác cao hơn walk_df['longitude'] và 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
Hướng dẫn bài tập
- Chuyển
walk_df['latitude']vàwalk_df['longitude']sang kiểu double bằng cách dùngcast('double')trên cột và thay thế cột tại chỗ vớiwithColumn(). - Làm tròn các cột tại chỗ với
withColumn()vàround('latitude', 5)vàround('longitude', 5). - Tạo điều kiện join sao cho
walk_df['latitude']khớp vớidf['latitude']vàwalk_df['longitude']khớp vớidf['longitude']. - Join
dfvàwalk_dfvớijoin(), dùng điều kiện ở trên và kiểu joinleft. 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())