จัดการค่าผิดปกติด้วย Winsorization
กำหนดให้มี basetable ที่ประกอบด้วยตัวแปรสองตัว ได้แก่ "sum\_donations" และ "donor\_id" โดย "sum_donations อาจมีค่าผิดปกติในกรณีที่ผู้บริจาคบางรายบริจาคในจำนวนที่สูงผิดปกติ ดังนั้นจึงต้องการ Winsorize ตัวแปรนี้ โดยแทนที่ 5% ของค่าสูงสุดด้วยค่า percentile ที่ 95
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Predictive Analytics ระดับกลางด้วย Python
คำแนะนำการฝึกหัด
- พิมพ์ค่าต่ำสุดของ
sum_donationsและตรวจสอบว่ามีค่าอย่างน้อย 0 จากนั้นพิมพ์ค่าสูงสุดของsum_donations - กำหนดขีดจำกัด percentile ล่างที่เหมาะสม เนื่องจากค่าทุกค่าที่มากกว่า 0 ถือว่าสมเหตุสมผลและพบได้บ่อย จึงไม่จำเป็นต้องแทนที่ค่าที่ต่ำกว่าขีดจำกัดล่าง
- สร้างตัวแปรใหม่ชื่อ "sum_donations_winsorized" ซึ่งเป็นเวอร์ชัน Winsorized ของตัวแปร "sum_donations"
- พิมพ์ค่าสูงสุดของ
sum_donations_winsorized
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
from scipy.stats.mstats import winsorize
# Check minimum sum of donations
print(____["____"].____())
print(____["____"].____())
# Fill out the lower limit
lower_limit = ____
# Winsorize the variable sum_donations
basetable["sum_donations_winsorized"] = ____(____["____"], limits=[lower_limit, 0.05])
# Check maximum sum of donations after winsorization
print(____["____"].____())