위험한 조인
이 연습 문제에서는 위도와 경도로 조인해, 동네의 보행 친화도를 측정한 다른 데이터셋을 가져오려고 합니다. 조인에 사용되는 컬럼의 데이터 타입이 같고, 소수점 아래 자리수(정밀도)도 같아야 조인이 제대로 동작한다는 점에 유의하세요!
아래를 보면 df['latitude']와 df['longitude']의 정밀도가 walk_df['longitude']와 walk_df['latitude']보다 높습니다. 조인이 올바르게 동작하도록 동일한 정밀도로 반올림해 주어야 합니다.
이 연습은 강의의 일부입니다
PySpark로 하는 Feature Engineering
연습 안내
withColumn()으로 컬럼을 제자리에서 교체하면서,cast('double')을 사용해walk_df['latitude']와walk_df['longitude']를 double 타입으로 변환하세요.withColumn()과round('latitude', 5),round('longitude', 5)를 사용해 해당 컬럼을 제자리에서 반올림하세요.walk_df['latitude']와df['latitude']가 일치하고,walk_df['longitude']와df['longitude']가 일치하도록 조인 조건을 만드세요.- 위의 조건과
left조인 타입을 사용해df와walk_df를join()으로 조인하고, 결과 데이터프레임을join_df로 저장하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# 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())