एक खतरनाक Join
इस अभ्यास में, हम Latitude और Longitude पर join करके एक और डेटासेट लाएँगे जो किसी मोहल्ले की walk-friendly होने की माप देता है। आपको सावधान रहना होगा कि जिन कॉलम्स पर join कर रहे हैं, उनका data type एक जैसा हो और precision (दशमलव के बाद अंकों की संख्या) भी बराबर हो, नहीं तो join काम नहीं करेगा!
नीचे आप देखेंगे कि df['latitude'] और df['longitude'] की precision, walk_df['longitude'] और walk_df['latitude'] से ज़्यादा है। हमें join को सही से चलाने के लिए इन्हें एक ही precision पर round करना होगा।
यह अभ्यास पाठ्यक्रम का हिस्सा है
PySpark के साथ Feature Engineering
अभ्यास निर्देश
walk_df['latitude']औरwalk_df['longitude']कोcast('double')लगाकर double टाइप में बदलें, औरwithColumn()से कॉलम को उसी जगह रिप्लेस करें।withColumn()के साथ कॉलम्स को जगह पर ही round करें:round('latitude', 5)औरround('longitude', 5)।- Join की शर्त बनाएँ जिसमें
walk_df['latitude']का मैचdf['latitude']से हो औरwalk_df['longitude']का मैचdf['longitude']से हो। - ऊपर दी गई शर्त और
leftjoin टाइप का उपयोग करते हुएdfऔरwalk_dfकोjoin()से जोड़ें। जुड़े हुए dataframe को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())