El sentido de la vida, el universo y todo lo demás: El número 42
Introducción a los valores faltantes
¿Por qué explorar y lidiar con valores faltantes?
Operaciones con valores faltantes
Conociendo datasets para manejo de datos faltantes
Correr una notebook dentro de otra en Deepnote
Extendiendo la API de Pandas
Tabulación de valores faltantes
Visualización de valores faltantes
Manipulación inicial de valores faltantes
Codificación de valores faltantes
Conversión de valores faltantes implícitos en explícitos
Exponer filas faltantes implícitas en explícitas
Tipos de valores faltantes
MCAR, MAR, MNAR en Python
Búsqueda de relaciones de valores faltantes
Matriz de sombras: shadow matrix
Visualización de valores faltantes en una variable
Visualización de valores faltantes en dos variables
Scatterplot con valores faltantes
Correlación de nulidad
Tratamiento de valores faltantes
Eliminación de valores faltantes: pairwise y listwise
Imputación básica de datos
Bonus: visualización múltiple de imputaciones
Cierre de curso
Continúa aprendiendo sobre el manejo de valores faltantes
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Aportes 6
Preguntas 0
Codigo de la funcion que permite completar los datos faltante para poder graficar el scatterplot
# funcion que añade valores aleatorios a las variables con valores faltantes
# para visualizarlos en un eje
def column_fill_with_dummies(
column: pd.Series,
proportion_below: float=0.10, #Proporcion de los datos en la grafica
jitter: float=0.075, # evita el asolapamiento de los puntos en la grafica
seed: int=42, #semilla para la aleatoriedad
) -> pd.Series: # la funcion retorna una serie
#Copiar las columnas del dataframe
column = column.copy(deep=True)
#Extraer los valores de las variables
missing_mask = column.isna() # matriz de booleanos
number_missing_values = missing_mask.sum() #conteo de valores faltantes
column_range = column.max() - column.min() #rango de las variables
# shift data
column_shift = column.min() - column.min() * proportion_below
# crear un poco de ruido alrededor de los puntos
np.random.seed(seed)
column_jitter = (np.random.rand(number_missing_values) - 2) * column_range * jitter
#Guardar los nuevos datos aleatorios
column[missing_mask] = column_shift + column_jitter
return column
Permite visualizar y comparar dos variables cuando a ambas le faltan valores. Un grafico muy util para este tipo de comparaciones son los scatterplot
Para este ejemplo, los puntos azules indican que existe valores tanto para la temperatura como para la humedad. Los puntos rojos indican que solo hay valores para una de las variables y no para la otra. Este tipo de grafica nos ayuda a conocer donde estan agrupados los valores faltantes respecto a otras variables y se grafican fuera de la presencia de los puntos reales para que no introduzcan ruido.
Ademas podemos incluir otro tipo de graficos como los boxplot que nos ayudan a compara la distribucion de los datos de las variables con la distribucion de los datos faltantes y a visualizar si se estan acumulando en un espacio del scatterplot
Este tipo de analisis es importante porque al realizar un EDA sobre los datos faltantes queremos saber si estos siguen una relacion, una tendencia, un comportamiento caracteristico que podamos rellenar segun su variabilidad.
la función column_fill_with dummies debería ir en la carpeta de los utils? 👀
def colum_fill_dummies(
column:pd.Series, # La columna que se debe procesar
proportion_bellow:float =0.10, # Porcentaje para determinar el valor mínimo
jitter:float=0.075, # Valor para crear "jitter" en los valores dummies
seed:int=42 # Semilla para la función de números aleatorios
) -> pd.Series: # La función devuelve una columna "Series" de pandas
# Copiar la columna de entrada
column=column.copy(deep=True)
# Obtener máscara de valores faltantes y número de valores faltantes
missing_mask=column.isna()
number_missing_values=missing_mask.sum()
# Calcular el rango de valores de la columna
column_range=column.max()-column.min()
# Calcular el valor mínimo de la columna con el porcentaje especificado
column_shift=column.min()-column.min()*proportion_bellow
# Crear "jitter" utilizando números aleatorios y el rango de la columna
np.random.seed(seed)
column_jitter=(np.random.rand(number_missing_values)-2)*column_range*jitter
# Reemplazar valores faltantes con valores dummies creados
column[missing_mask]=column_shift+column_jitter
# Devolver la columna modificada
return column
Referencia a la guía del autoestopista galáctico 👀
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?
o inicia sesión.