ข้ามไปเนื้อหาหลัก

วิธีแยกชื่อเจ้าของอสังหาฯ ใน Pandas สำหรับ Python

สร้าง Python Pandas pipeline เพื่อแยกชื่อเจ้าของที่ดินจากข้อมูลเขตพื้นที่ รองรับทั้งบุคคล คู่สมรส ทรัสต์ และนิติบุคคล พร้อมรับมือ Latin abbreviations

เรียบเรียงโดย AI
Inewgen
23 Oct 2026ที่มา: Dev.to4 นาทีอ่าน (0 ครั้ง)
แชร์
วิธีแยกชื่อเจ้าของอสังหาฯ ใน Pandas สำหรับ Python

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง

ขนาดตัวอักษร
  • ชื่อเจ้าของอสังหาฯ ในฐานข้อมูลเขตพื้นที่มักรวมหลายข้อมูลไว้ในเซลล์เดียว
  • ต้องแยกประเภทและทำความสะอาดข้อมูลด้วย Pandas ก่อนนำไปใช้ต่อ
  • ระวังปัญหาสัญลักษณ์คั่น เช่น / หรือเครื่องหมาย & และคำว่า AND
  • ตรวจสอบสถานะการแปลงข้อมูลเพื่อคัดกรองเรคอร์ดที่ซับซ้อนไปตรวจทานด้วยมือ

เมื่อคุณดึงข้อมูลแปลงที่ดินจากสำนักงานเขตหรือผู้ประเมินทรัพย์สิน คุณจะพบว่าฟิลด์ชื่อเจ้าของมักไม่ได้มีแค่ชื่อคนคนเดียว แต่มักอัดแน่นไปด้วยข้อมูลหลายชุดในช่องเดียวกัน เช่น คู่สมรสสองคนในเซลล์เดียว ทรัสต์ที่มี trustee แฝงอยู่ นิติบุคคล กองมรดกของผู้เสียชีวิต รวมถึงตัวย่อภาษาละตินที่แปลว่า "และคนอื่นๆ" ก่อนที่คุณจะส่งข้อมูลนี้ไปทำ skip tracing คุณจึงต้องแยกแยะให้ได้เสียก่อนว่าเรคอร์ดนั้นๆ คือใครหรืออะไร เพราะการนำชื่ออย่าง SMITH JOHN & MARY ETUX ไปค้นหาแบบรวดเดียวเป็นสตริงเดียวย่อมไม่ได้ผล และการส่งบริษัท MAIN STREET HOLDINGS LLC ไปค้นหาข้อมูลบุคคลก็เป็นการเสียเวลาเปล่า

บทความนี้จะพาคุณสร้าง Python Pandas pipeline ขนาดเล็กที่ทำงานร่วมกับ Python 3 และ pandas เวอร์ชัน 1.5 ขึ้นไป (เนื่องจากใช้งานฟีเจอร์ reset_index(names=...)) โดยระบบบันทึกของหน่วยงานประเมินมักไม่ได้ถูกออกแบบมาเพื่อป้อนเข้าสู่ระบบงานติดต่อสื่อสาร ทำให้คุณมักพบรูปแบบข้อมูลที่หลากหลายขึ้นอยู่กับแต่ละเคาน์ตี้และปีที่มีการบันทึกข้อมูล ดังนั้นรายการคำสำคัญจึงควรใช้เป็นจุดเริ่มต้นเท่านั้น คุณควรสุ่มตัวอย่างจากข้อมูลส่งออกของคุณเองก่อนที่จะเชื่อมั่นในกฎใดๆ

data analysis spreadsheet office desk

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง

ขั้นตอนแรกก่อนเขียนกฎการแยกข้อมูลคือการตรวจสอบว่ามีโทเคนใดปรากฏอยู่จริงบ้าง การนับจำนวนโทเคน โดยเฉพาะโทเคนตัวสุดท้าย จะช่วยให้คุณรู้ได้อย่างรวดเร็วว่าเคาน์ตี้ของคุณใช้คำต่อท้ายหรือสัญลักษณ์ใดบ้าง โดยชุดคำสั่งทำความสะอาดด้วย regex จะต้องเก็บเครื่องหมาย / เอาไว้ เพื่อให้สัญลักษณ์อย่าง H/W ยังคงเป็นโทเคนเดียวได้ สิ่งสำคัญคือห้ามเขียนทับฟิลด์ต้นฉบับเด็ดขาด ทุกแถวที่ถูกแปลงจะต้องสามารถสืบย้อนกลับไปยังสตริงเดิมได้ การทำ normalization ควรทำอย่างเบามือ เช่น แปลงเป็นตัวพิมพ์ใหญ่ ตัดจุด จัดการคอมมาให้เป็นมาตรฐาน และยุบช่องว่างที่เกินออก

การจำแนกประเภท (Classification) ต้องมาก่อนเสมอ เพราะการแยกเจ้าของร่วมควรทำเฉพาะกับบุคคลเท่านั้น ยกตัวอย่างเช่น JOHNSON & JOHNSON INC แม้จะมีเครื่องหมาย ampersand แต่ก็เป็นนิติบุคคลเพียงหนึ่งเดียว โดยรูปแบบจะถูกตรวจสอบตามลำดับดังนั้นการแมทช์แรกจะชนะ ขอบเขตคำ () มีความสำคัญมาก เช่น TRUST ต้องไม่ไปแมทช์กับ TRUSTEE และคำว่า STATE OF ต้องไม่ไปแมทช์อยู่ข้างใน ESTATE OF สำหรับบุคคลทั่วไป เครื่องหมายเจ้าของร่วมและ trustee จะถูกแปลงเป็น boolean flag แล้วถูกดึงออกจากข้อความชื่อ จากนั้นสตริงที่เหลือจะถูกแยกด้วย & คำว่า AND หรือ / โดยสัญลักษณ์ slash จะต้องถูกลบออกก่อนทำการแยกเสมอ

ไม่อยากพลาดข่าวใหม่?

สมัครรับสรุปข่าวสารใหม่ทางอีเมล ไม่บ่อยจนรำคาญ

โฆษณา

ในมุมมองของการจัดการข้อมูล (Data Pipeline) การแยกชื่อบุคคลที่มีความซับซ้อนมักล้มเหลวเพราะนักพัฒนาเลือกวิธีตีความแบบใดแบบหนึ่งแล้วจบไปทันที แนวทางที่ดีจึงควรใช้กฎแบบอนุรักษ์นิยม (Conservative) นั่นคือหากข้อมูลมีความกำกวมสูง ระบบควรจัดให้อยู่ในสถานะที่ต้องตรวจสอบด้วยมนุษย์ (Manual review) ดีกว่าการเดาข้อมูลที่อาจส่งผลให้กระบวนการ skip tracing ปลายทางผิดพลาดและเสียค่าใช้จ่ายโดยเปล่าประโยชน์

สำหรับชื่อที่สองและชื่อถัดไปในสตริงเจ้าของร่วม ระบบจะทำการดึงคำนำหน้า นามสกุล และชื่อต้นออกมาอย่างระมัดระวัง พร้อมทั้งแยกแยะคำต่อท้ายแสดงรุ่น (JR, SR, II, III, IV) ยกเว้นตัว V ที่จงใจละเว้นไว้เพราะอาจไปทับซ้อนกับชื่อกลางที่เป็นตัวอักษร V แถวข้อมูลที่ถูกตั้งค่าแฟล็กไว้ไม่ใช่ความล้มเหลว แต่เป็นจุดที่การเดาอย่างมั่นใจอาจส่งผลให้ส่งชื่อผิดไปยังผู้ให้บริการ skip tracing การตรวจสอบด้วยมืออย่างรวดเร็วจึงมักคุ้มค่ากว่าการตามแก้ปัญหาในภายหลัง

เมื่อไปป์ไลน์ทำงานเสร็จสิ้น คุณควรตรวจสอบการกระจายตัวของสถานะ (Statuses) ก่อนนำข้อมูลออกไปใช้งาน โดยทุกแถวควรอยู่ในถังข้อมูล (Bucket) เพียงถังเดียวอย่างแม่นยำ รวมถึงแถวที่ฟิลด์เจ้าของว่างเปล่า การแยกชื่อเจ้าเป็นเพียงขั้นตอนหนึ่งในกระบวนการเตรียมข้อมูลที่ยาวกว่า หลังจากขั้นตอนนี้ ข้อมูลของคุณจะพร้อมสำหรับการดำเนินการในขั้นตอนถัดไปตามความเหมาะสมของโครงการ

ที่มา: Dev.to

ความคิดเห็น

แสดงความคิดเห็น
0/2000

พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้