貸款資料中的遺漏值風險

以 Python 進行信用風險建模

Michael Crabtree

Data Scientist, Ford Motor Company

什麼是遺漏值?

  • 列中出現 NULL 而非實際數值
  • 空字串 ''
  • 不是完全空白的列
  • 可能出現在任何欄位

含遺漏就業年資的資料框範例

以 Python 進行信用風險建模

與離群值的相似處

  • 會降低機器學習模型效能
  • 可能以預期外的方式造成偏誤
  • 對某些機器學習模型可能導致錯誤
以 Python 進行信用風險建模

與離群值的相似處

  • 會降低機器學習模型效能
  • 可能以預期外的方式造成偏誤
  • 對某些機器學習模型可能導致錯誤
遺漏值類型 可能結果
數值欄中的 NULL Error
字串欄中的 NULL Error
以 Python 進行信用風險建模

如何處理遺漏值

  • 處理遺漏值通常有三種方式
    • 在缺值處填補數值
    • 移除含有遺漏值的列
    • 保留遺漏值不變
  • 需先理解資料,再決定作法
以 Python 進行信用風險建模

如何處理遺漏值

  • 處理遺漏值通常有三種方式
    • 在缺值處填補數值
    • 移除含有遺漏值的列
    • 保留遺漏值不變
  • 需先理解資料,再決定作法
遺漏值 解讀 動作
loan_status 為 NULL 貸款剛核准 從預測資料中移除
person_age 為 NULL 年齡未記錄或未提供 以中位數取代
以 Python 進行信用風險建模

尋找遺漏值

  • .isnull() 可輕鬆找出空值
  • sum() 可快速計算空值筆數
  • .any() 方法可檢查所有欄位
null_columns = cr_loan.columns[cr_loan.isnull().any()]
cr_loan[null_columns].isnull().sum()
# 每個欄位的空值總數
person_home_ownership          25
person_emp_length             895
loan_intent                    25
loan_int_rate                3140
cb_person_default_on_file      15
以 Python 進行信用風險建模

填補遺漏值

  • .fillna() 搭配彙總函式與方法填補遺漏值
cr_loan['loan_int_rate'].fillna((cr_loan['loan_int_rate'].mean()), inplace = True)

以平均值取代遺漏的利率範例

以 Python 進行信用風險建模

刪除遺漏值

  • 與離群值相同,利用索引找到目標紀錄
  • 使用 .drop() 方法直接移除紀錄
indices = cr_loan[cr_loan['person_emp_length'].isnull()].index
cr_loan.drop(indices, inplace=True)
以 Python 進行信用風險建模

一起來練習吧!

以 Python 進行信用風險建模

Preparing Video For Download...