iT邦幫忙

2026 iThome 鐵人賽

DAY 4
0
自我挑戰組

Medical Data Cleaner系列 第 16 篇

處理數值異常資料

  • 分享至 

  • xImage
  •  

一、找出數值異常
前幾天已經完成數值範圍的檢查。
目前測試資料中有兩筆比較明顯的異常:
P007 → age = -5
P008 → heart_rate = 999
這兩筆資料雖然有被系統找出來,但如果只是顯示錯誤訊息,使用者還是需要自己處理。
因此今天進一步讓系統在產生清理後資料時,自動處理這些異常值。
二、設定數值處理方式
目前專案使用的測試規則為:

  • age:0~120
  • heart_rate:30~200
    如果數值超出這個範圍,就將清理後的資料標記為Unknown。
    三、處理異常的age
    原本的程式只會找出異常值,現在加入清理功能,當系統發現age超出範圍時就會修改清理後的$cleamedRow
if (is_numeric($row[1])) {

    if ($row[1] < 0 || $row[1] > 120) {

        $rangeCount++;
        $affectedPatients[$row[0]] = true;

        echo '【數值異常】' . $row[0]
            . ' → age = ' . $row[1]
            . ' → 建議處理:標記為 Unknown<br>';

        $cleanedRow[1] = 'Unknown';
    }
}

例:
P007 | -5 -> P007 | Unknown
heart_rate也使用相同方式
四、執行結果
執行程式後可以看到:

【數值異常】P007 → age = -5 → 建議處理:標記為 Unknown
【數值異常】P008 → heart_rate = 999 → 建議處理:標記為 Unknown

在最下面的「清理後資料預覽」中:

P007 | Unknown | 女 | 155 | 47 | 105/68 | 72 | 內科 | 2026-09-04
P008 | 50 | 男 | 170 | 70 | 125/82 | Unknown | 家醫科 | 2026-09-04

可以看到異常的數值已經不會直接出現在清理後資料中。
目前的流程變成:CSV->資料品質檢查->找出問題->進行資料處理->產生清理後資料->清理後資料預覽


上一篇
處理重複資料
系列文
Medical Data Cleaner 共 16 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言