No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Codificación de valores faltantes

8/21
Recursos

Aportes 11

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Codificacion de valores Faltantes

Asumir que los datos faltantes siempre vendran en un unico formato es un error.

Algunas formas en que se representa los datos faltantes son: NA, N/A, na, Missing, -1, -77, no available

  • Valores comunmente asociados a valores faltantes. Cadenas de texto
common_na_strings = (
    "missing",
    "NA",
    "N A",
    "N/A",
    "#N/A",
    "NA ",
    " NA",
    "N /A",
    "N / A",
    " N / A",
    "N / A ",
    "na",
    "n a",
    "n/a",
    "na ",
    " na",
    "n /a",
    "n / a",
    " a / a",
    "n / a ",
    "NULL",
    "null",
    "",
    "?",
    "*",
    ".",
)
  • Valores comunmente asociados a valores faltantes. Numeros
common_na_numbers = (-9, -99, -999, -9999, 9999, 66, 77, 88, -1)
  • DataFrame con valores faltantes
missing_data_example_df = pd.DataFrame.from_dict(
    dict(
        x = [1, 3, "NA", -99, -98, -99],
        y = ["A", "N/A", "NA", "E", "F", "G"],
        z = [-100, -99, -98, -101, -1, -1]
    )
)

missing_data_example_df
  • Buscando valores faltantes con la funcion number_missing()
missing_data_example_df.missing.number_missing()
--> 0     # arroja cero debido a que no reconoce los diferentes tipos de datos faltantes
  • Conocer las columnas donde hay valores faltantes mediante el tipo de dato
missing_data_example_df.dtypes
--> x    object
		y    object
		z     int64
		dtype: object
# La columna x solo tiene 1 string y pandas reconoce toda la columna como object
# por tanto se intuye que en dicha columna existen valores faltantes
  • Detectar valores faltantes revisando valores unicos de los datos
missing_data_example_df.x.unique()
--> array([1, 3, 'NA', -99, -98], dtype=object)
# solamente puedes revisar columna por columna y sirve para dataframe pequeños
  • Detectar valores faltantes revisando los valores unicos de las variables de un determinado tipo
(
    missing_data_example_df
    .select_dtypes(object)
    .apply(pd.unique)
)

--> x     [1, 3, NA, -99, -98]
		y    [A, N/A, NA, E, F, G]
		dtype: object
# selecciona las variables de tipo object y regresa sus valores unicos

Sustituyendo valores comunmente asociados a valores faltantes

  • Sustitucion desde la lectura de los datos
pd.read_csv(
    './data/missing_data_enconding_example.csv',
    na_filter=True,
    na_values=[-99, -1]
)
# sustituye los valores -99 y -1 por nan desde el archivo raiz
# de esta manera pandas detecta que son valores faltantes
  • Sustitucion Global
(
    missing_data_example_df
    .replace(
        to_replace=[-99, 'NA'],
        value= np.nan
    )
)
# sustituye todos los valores -99 y NA por nan desde el dataframe
  • Sustitucion Dirigida
(
    missing_data_example_df
    .replace(
        to_replace={
            'x':{
                -99:np.nan
            }
        }
    )
)
# Sustituye los valores -99 por nan solo en la variable x del dataframe

Creo que a la hora de reemplazar los datos es mejor revisar por columna y hacer un reemplazo con más control, pues a pesar de tardar más tiempo se pueden adaptar a las condiciones de cada columna de datos.

Tambien se puede apoyar en expresiones regulares para escarbar en busca de valores faltantes que sean colocados de manera rara. Pero esto conllevaria a una creacion generalmente unica por columna, ya que podria en una variable aplicar y en otra no.

¿Alguien más que se haya sorprendido de no ver en la lista a estos dos personajes? :

"NaN",
"nan"

Esta es una de esas clases en la que no paras de pensar:
" raioz, era así de fácil entonces? " xd

es mi impresión o el curso en verdad empieza desde acá?
las 7 primeras clases me parecieron el tipico tutorial de python de

tutorial de como hacer x cosa
import x cosa

Muy interesante este otro tipo de manera en que las personas escriben cuando no tienen el dato, otro caso es explorar los datos con criterio conociendo que se busca, por ejemplo un dato negativo hablando de tiempo no tiene sentido, entonces también serian datos de tener cuidado.

common_na_strings = (
'missing',
'NA',
'N A',
'#N/A',
'NA ',
' NA',
'N /A',
'N / A',
' N / A ',
'na'
)

Valores faltantes = Fuc. k

La codificación de valores faltantes en un conjunto de datos es una parte importante del preprocesamiento de datos antes de realizar análisis o entrenar modelos. Hay varias estrategias para manejar los valores faltantes dependiendo del contexto y de los datos en cuestión. A continuación te explico algunas técnicas comunes usando `pandas` para la codificación y manejo de valores faltantes. \### 1. \*\*Eliminar los valores faltantes\*\* \- Si los valores faltantes son pocos, puedes eliminarlos de forma segura sin perder información relevante. ```python import pandas as pd \# Cargar un DataFrame de ejemplo df = pd.DataFrame({ 'Producto': \['A', 'B', 'C', 'D', 'E'], 'Precio': \[100, 200, None, 150, None] }) \# Eliminar filas con valores faltantes df\_clean = df.dropna() print(df\_clean) ``` \### 2. \*\*Rellenar valores faltantes con un valor específico (imputación simple)\*\* \- Puedes rellenar los valores faltantes con un valor como la media, mediana, moda o un número fijo. ```python \# Rellenar valores faltantes con la media de la columna 'Precio' df\['Precio'] = df\['Precio'].fillna(df\['Precio'].mean()) print(df) ``` \- \*\*Rellenar con un valor fijo\*\*: ```python \# Rellenar valores faltantes con 0 df\['Precio'] = df\['Precio'].fillna(0) ``` \### 3. \*\*Interpolación de valores faltantes\*\* \- La interpolación estima valores faltantes utilizando el patrón de los datos adyacentes. ```python \# Rellenar valores faltantes usando interpolación df\['Precio'] = df\['Precio'].interpolate() print(df) ``` \### 4. \*\*Codificación de valores faltantes con un marcador\*\* \- A veces, en lugar de imputar, es útil codificar los valores faltantes con un marcador (ej. 'Desconocido' o 'Sin datos'). ```python \# Rellenar valores faltantes con una cadena 'Desconocido' df\['Producto'] = df\['Producto'].fillna('Desconocido') print(df) ``` \### 5. \*\*Codificación con etiquetas binarias\*\* \- Puedes crear una columna binaria adicional que marque si un valor estaba o no ausente en una columna original. ```python \# Crear una columna binaria que indica si el valor estaba ausente df\['Faltante\_Precio'] = df\['Precio'].isnull().astype(int) print(df) ``` \### 6. \*\*Imputación con técnicas avanzadas (KNN, Regresión, etc.)\*\* \- Herramientas más avanzadas como \*\*K-Nearest Neighbors (KNN)\*\* o regresión pueden ser utilizadas para imputar valores faltantes basados en otras variables. Para esto, puedes usar bibliotecas como `sklearn`. ```python from sklearn.impute import KNNImputer \# Ejemplo de imputación usando KNN imputer = KNNImputer(n\_neighbors=2) df\[\['Precio']] = imputer.fit\_transform(df\[\['Precio']]) print(df) ``` \### Conclusión: El enfoque más adecuado para manejar los valores faltantes depende del contexto del problema, la cantidad de datos faltantes, y la naturaleza de los datos. Puedes combinar varias estrategias según tus necesidades para asegurar que los valores faltantes no afecten negativamente el análisis o modelo. Si quieres ejemplos más específicos de cómo aplicar estas técnicas a tus datos, ¡házmelo saber!
En estas clases siento que aprendo más de Python y su entorno que del tema en sí. Me encanta.

impresionante!