Tehlikeli Bir Join
Bu egzersizde, bir mahalleyi ne kadar yaya dostu olduğunu ölçen başka bir veri kümesini eklemek için Enlem ve Boylam üzerinden join yapacağız. Join sütunlarımızın aynı veri tipinde olduğundan ve aynı hassasiyette (ondalıktan sonra aynı basamak sayısı) eşleştirildiğinden emin olmalıyız; yoksa join çalışmaz!
Aşağıda df['latitude'] ve df['longitude'] sütunlarının, walk_df['longitude'] ve walk_df['latitude'] sütunlarına göre daha yüksek hassasiyete sahip olduğunu göreceksin; join'in doğru çalışması için bunları aynı hassasiyete yuvarlamamız gerekecek.
Bu egzersiz, kursun bir parçasıdır
PySpark ile Özellik Mühendisliği
Egzersiz talimatları
walk_df['latitude']vewalk_df['longitude']sütunlarınıcast('double')kullanarak double türe dönüştür ve sütunları yerindewithColumn()ile değiştir.- Sütunları
withColumn()ile yerinde yuvarla:round('latitude', 5)veround('longitude', 5). - Join koşulunu oluştur:
walk_df['latitude']iledf['latitude']vewalk_df['longitude']iledf['longitude']eşleşsin. dfvewalk_dfveri çerçevelerini yukarıdaki koşulla veleftjoin türüylejoin()kullanarak birleştir. Birleşik veri çerçevesinijoin_dfolarak kaydet.
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
# 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())