Tratar los datos que faltan

Análisis exploratorio de datos en Python

George Boorman

Curriculum Manager, DataCamp

¿Por qué la falta de datos es un problema?

  • Afecta a las distribuciones
    • Alturas que faltan de los estudiantes más altos
  • Menos representativo de la población
    • Ciertos grupos están representados de manera desproporcionada, por ejemplo, faltan datos sobre los estudiantes de más edad
  • Puede llevar a conclusiones erróneas

Distribución de la altura de la muestra frente a la población, que muestra que la muestra tiene un máximo y una media más bajos.

Análisis exploratorio de datos en Python

Datos sobre el trabajo de los profesionales de datos

Columnas Descripción Tipo de datos
Working_Year Año en que se obtuvieron los datos Flotante
Designation Título del puesto Cadena
Experience Nivel de experiencia, por ejemplo, "Mid", "Senior" Cadena
Employment_Status Tipo de contrato de trabajo, por ejemplo, "FT", "PT" Cadena
Employee_Location País de empleo Cadena
Company_Size Etiquetas para el tamaño de la empresa, por ejemplo, "S", "M", "L" Cadena
Remote_Working_Ratio Porcentaje de tiempo trabajando a distancia Entero
Salary_USD Salario en dólares Flotante
Análisis exploratorio de datos en Python

Salario según el nivel de experiencia

Gráfico de caja de los salarios según el nivel de experiencia utilizando el conjunto de datos limpio, con un límite superior cercano a los 600 000 dólares.

Gráfico de caja de los salarios según el nivel de experiencia utilizando un conjunto de datos con valores que faltan, que muestra un límite superior cercano a los 450 000 dólares.

Análisis exploratorio de datos en Python

Comprobar los valores que faltan

print(salaries.isna().sum())
Working_Year            12
Designation             27
Experience              33
Employment_Status       31
Employee_Location       28
Company_Size            40
Remote_Working_Ratio    24
Salary_USD              60
dtype: int64
Análisis exploratorio de datos en Python

Estrategias para abordar los datos que faltan

  • Eliminar los valores que faltan
    • 5 % o menos del valor total
  • Imputar media, mediana, moda
    • Depende de la distribución y el contexto
  • Imputar por subgrupo
    • Los diferentes niveles de experiencia tienen diferentes salarios medios
Análisis exploratorio de datos en Python

Eliminar valores que faltan

threshold = len(salaries) * 0.05
print(threshold)
30
Análisis exploratorio de datos en Python

Eliminar valores que faltan

cols_to_drop = salaries.columns[salaries.isna().sum() <= threshold]

print(cols_to_drop)
Index(['Working_Year', 'Designation', 'Employee_Location',
       'Remote_Working_Ratio'],
      dtype='object')
salaries.dropna(subset=cols_to_drop, inplace=True)
Análisis exploratorio de datos en Python

Imputar una estadística resumida

cols_with_missing_values = salaries.columns[salaries.isna().sum() > 0]
print(cols_with_missing_values)
Index(['Experience', 'Employment_Status', 'Company_Size', 'Salary_USD'], 
    dtype='object')
for col in cols_with_missing_values[:-1]:
    salaries[col].fillna(salaries[col].mode()[0])
Análisis exploratorio de datos en Python

Comprobar el resto de valores que faltan

print(salaries.isna().sum())
Working_Year             0
Designation              0
Experience               0
Employment_Status        0
Employee_Location        0
Company_Size             0
Remote_Working_Ratio     0
Salary_USD              41
Análisis exploratorio de datos en Python

Imputación por subgrupos

salaries_dict = salaries.groupby("Experience")["Salary_USD"].median().to_dict()

print(salaries_dict)
{'Entry': 55380.0, 'Executive': 135439.0, 'Mid': 74173.5, 'Senior': 128903.0}
Análisis exploratorio de datos en Python

Imputación por subgrupos

salaries["Salary_USD"] = salaries["Salary_USD"].fillna(salaries["Experience"].map(salaries_dict))
Análisis exploratorio de datos en Python

Que no falten valores

print(salaries.isna().sum())
Working_Year            0
Designation             0
Experience              0
Employment_Status       0
Employee_Location       0
Company_Size            0
Remote_Working_Ratio    0
Salary_USD              0
dtype: int64
Análisis exploratorio de datos en Python

¡Vamos a practicar!

Análisis exploratorio de datos en Python

Preparing Video For Download...