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