Riesgo por datos faltantes en préstamos

Modelado del riesgo crediticio en Python

Michael Crabtree

Data Scientist, Ford Motor Company

¿Qué son los datos faltantes?

  • NULLs en una fila en lugar de un valor real
  • Una cadena vacía ''
  • No es una fila totalmente vacía
  • Puede ocurrir en cualquier columna

Muestra de DataFrame con longitud de empleo faltante

Modelado del riesgo crediticio en Python

Similitudes con los outliers

  • Afectan negativamente el rendimiento del modelo
  • Pueden sesgar los modelos de forma inesperada
  • Pueden causar errores en algunos modelos
Modelado del riesgo crediticio en Python

Similitudes con los outliers

  • Afectan negativamente el rendimiento del modelo
  • Pueden sesgar los modelos de forma inesperada
  • Pueden causar errores en algunos modelos
Tipo de dato faltante Posible resultado
NULL en columna numérica Error
NULL en columna de texto Error
Modelado del riesgo crediticio en Python

Cómo tratar los datos faltantes

  • Hay tres formas de tratar los datos faltantes
    • Reemplazar los valores faltantes
    • Eliminar las filas con faltantes
    • Dejar las filas sin cambios
  • Conocer los datos define la acción
Modelado del riesgo crediticio en Python

Cómo tratar los datos faltantes

  • Hay tres formas de tratar los datos faltantes
    • Reemplazar los valores faltantes
    • Eliminar las filas con faltantes
    • Dejar las filas sin cambios
  • Conocer los datos define la acción
Dato faltante Interpretación Acción
NULL en loan_status Préstamo recién aprobado Excluir de datos de predicción
NULL en person_age Edad no registrada o no revelada Reemplazar por la mediana
Modelado del riesgo crediticio en Python

Detectar datos faltantes

  • Los valores nulos se detectan con isnull()
  • Cuenta los nulos con sum()
  • El método .any() revisa todas las columnas
null_columns = cr_loan.columns[cr_loan.isnull().any()]
cr_loan[null_columns].isnull().sum()
# Total de valores nulos por columna
person_home_ownership          25
person_emp_length             895
loan_intent                    25
loan_int_rate                3140
cb_person_default_on_file      15
Modelado del riesgo crediticio en Python

Reemplazar datos faltantes

  • Reemplaza los datos faltantes con .fillna() usando funciones y métodos agregados
cr_loan['loan_int_rate'].fillna((cr_loan['loan_int_rate'].mean()), inplace = True)

Ejemplo de tipo de interés faltante reemplazado por el promedio

Modelado del riesgo crediticio en Python

Eliminar datos faltantes

  • Usa índices para identificar registros, igual que con outliers
  • Elimina los registros con .drop()
indices = cr_loan[cr_loan['person_emp_length'].isnull()].index
cr_loan.drop(indices, inplace=True)
Modelado del riesgo crediticio en Python

¡Vamos a practicar!

Modelado del riesgo crediticio en Python

Preparing Video For Download...