การแทนค่า NaN
มาลองแทนค่าข้อมูลที่ขาดหายไปโดยใช้เมธอด .transform() กัน ในงานก่อนหน้า เราสร้าง DataFrame fheroes ซึ่งลบกลุ่มที่มีจำนวนข้อมูล bmi ไม่เพียงพอออกไปแล้ว อย่างไรก็ตาม คอลัมน์ bmi ยังมีค่าที่ขาดหายไป (NaN) จำนวนมาก โดยมี DataFrame fheroes สองชุด (imp_globmean และ imp_grpmean) งานของคุณคือแทนค่า NaN ในคอลัมน์ bmi ด้วยค่าเฉลี่ยรวมทั้งหมด และด้วยค่าเฉลี่ยต่อกลุ่มที่แบ่งตามปัจจัย Publisher และ Alignment ตามลำดับ
เคล็ดลับ: pandas Series และ NumPy arrays มีเมธอดพิเศษ .fillna() ซึ่งแทนที่ค่า NaN ทุกตัวด้วยค่าที่ระบุเป็นอาร์กิวเมนต์
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
ฝึกทำโจทย์สัมภาษณ์งานเขียนโค้ดด้วย Python
คำแนะนำการฝึกหัด
- กำหนดฟังก์ชัน lambda ที่แทนค่า
NaNในseriesด้วยค่าเฉลี่ยของ series นั้น - แทนค่า
NaNในคอลัมน์bmiของimp_globmeanด้วยค่าเฉลี่ยรวมทั้งหมด - แทนค่า
NaNในคอลัมน์bmiของimp_grpmeanด้วยค่าเฉลี่ยต่อกลุ่ม
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Define a lambda function that imputes NaN values in series
impute = lambda series: ____
# Impute NaNs in the bmi column of imp_globmean
imp_globmean['bmi'] = ____
print("Global mean = " + str(fheroes['bmi'].mean()) + "\n")
groups = imp_grpmean.groupby(['Publisher', 'Alignment'])
# Impute NaNs in the bmi column of imp_grpmean
imp_grpmean['bmi'] = groups[____].____
print(groups['bmi'].mean())