Hola, me llamo Miguel y para hoy les traigo este post.
Y pasar de no encontrar una explicación
Limpiar el conjunto de datos de viviendas del condado de King. Esta semana tenía planeado hacer grandes avances en algunas de las otras columnas, como latitud y longitud, vistas, grado y, tal vez, incluso sqft_living15 y sqft_lot15. Y luego me encontré con un inconveniente: a veces la vida no sale como esperábamos. Esto es lo que sucedió con mi trabajo en la columna «Waterfront».
La columna «frente al mar» indica si una propiedad es frente al mar o no; ‘0’ significa que no es una propiedad frente al mar y un ‘1’ significa que la propiedad es frente al mar. Algunos comandos rápidos mostrarán la cantidad de cada uno y el número total de valores:
Y encuentro que hay 19,075 valores para 0 (no una propiedad frente al mar) y solo 146 valores para 1 (una propiedad frente al mar). El número total de filas en el conjunto de datos en este punto es 21.597, lo que significa que hay 2.376 valores nulos. Una comprobación rápida confirma esto.
Curiosamente, los valores nulos no se consideran en los recuentos de valores y pueden identificarse utilizando df.waterfront.isna (). Sum () o df.waterfront.isnull (). Sum ().
Aproximadamente el 11% de los datos de la zona ribereña contiene un valor nulo, lo cual es considerable. Después de un debate interno sobre las ventajas de mantener los valores o eliminarlos, decidí eliminar las filas con un valor de línea de costa nulo del conjunto de datos. Mi razonamiento fue que había un porcentaje tan pequeño de viviendas frente al mar. Usé la siguiente línea de código para eliminar las filas nulas:
Una nueva verificación de valores nulos arrojó un resultado de 0. Creo que se han eliminado los valores nulos. ¡Excelente! Siga adelante.
Sin embargo, más adelante, mientras trabajaba con códigos postales, encontré un valor de NaN en el paseo marítimo. ¡¿Qué?! Resulta que mi limpieza inicial de valores nulos fue incorrecta y, aún más frustrante, fue que no había recibido un código de error. y una comprobación de nulos indicó que no quedaban valores nulos. Cuando usé el método correcto
df = df.dropna(axis=0, subset=[‘waterfront’])
Los nulos se fueron de nuevo (y de verdad esta vez).
Aunque mi intento inicial de eliminar los valores nulos fue incorrecto (ni siquiera estoy seguro de dónde se me ocurrió ese código), la verificación del valor nulo «confirmó» que se habían ido cuando en realidad no lo estaban. Pasé mucho tiempo leyendo sobre valores nulos, valores NaN, datos faltantes, la documentación de los pandas en .dropna () e incluso .notnull () para intentar descubrir una pequeña cantidad de información que explicaría mi error. No se me ocurrió nada y sentí que la frustración aumentaba. Solo estaba perdiendo el tiempo, sin encontrar respuesta (aparte del hecho de que usé el método .dropna () incorrectamente) y tenía muchas otras cosas que hacer: limpiar datos, hacer que Github se comprometiera, escribir un blog y postularme a trabajos.
Gracias por leer el artículo.
Añadir comentario