เตรียมข้อมูลที่ถูก censor
สมมติว่าคุณเป็นนักชีววิทยาทางทะเลที่กำลังศึกษาอายุขัยของโลมาสปินเนอร์ คุณมีข้อมูลย้อนหลังที่บันทึกวันเกิดและวันตายของโลมาแต่ละตัว โดยมีบางกรณีที่น่าสนใจ ได้แก่ โลมาบางตัวอพยพออกไปยังพื้นที่อื่น ทำให้ทีมวิจัยสูญเสียการติดตาม บางตัวเป็นโลมาที่ย้ายมาจากฝูงอื่นและไม่ทราบวันเกิดที่แน่ชัด และบางตัวยังมีชีวิตอยู่!
- ถ้าวันเกิดเป็น
NaNแสดงว่าโลมาตัวนั้นอพยพมาจากฝูงอื่น - ถ้าวันตายเป็น
NaNแสดงว่าโลมาตัวนั้นหนีไปหรือยังมีชีวิตอยู่
DataFrame ที่ใช้งานชื่อว่า dolphin_df ให้สร้างคอลัมน์ใหม่ชื่อ observed เพื่อระบุว่าช่วงอายุของโลมาแต่ละตัวถูก censor หรือไม่ โดยเติมค่าที่เหมาะสมในฟังก์ชัน check_observed แล้วใช้ .apply() เพื่อนำฟังก์ชันนี้ไปใช้กับ dolphin_df
pandas และ numpy ถูกโหลดไว้แล้วในชื่อ pd และ np ตามลำดับ
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Survival Analysis ด้วย Python
คำแนะนำการฝึกหัด
- สร้างฟังก์ชัน
check_observedที่คืนค่า0ถ้าข้อมูลนั้นถูก censor และคืนค่า1ในกรณีอื่น - สร้างคอลัมน์ flag การ censor ชื่อ
observedโดยใช้ฟังก์ชันcheck_observed - แสดงค่าเฉลี่ยของคอลัมน์
observedใน console
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Create a function to return 1 if observed 0 otherwise
def check_observed(row):
if pd.isna(row['birth_date']):
flag = ____
elif pd.isna(row['death_date']):
flag = ____
else:
flag = ____
return ____
# Create a censorship flag column
dolphin_df[____] = dolphin_df.apply(____, axis=1)
# Print average of observed
print(np.average(____))