Ficha · Sesión 19 · Módulo IV, Los datos
«De la pregunta a la herramienta»
¿Cómo se limpian los datos sin que la limpieza se vuelva una decisión invisible?
Con un script que parte de los datos crudos, se puede volver a correr y queda en git. Cada regla de limpieza es una decisión de análisis escrita, y se comprueba comparando el antes y el después.
Limpiar datos con un agente
El oficio que ya tienes
Documentar la limpieza. Quien ha preparado una base para análisis sabe que recodificar es decidir, y que una decisión sin nota se olvida en una semana. Un script es esa nota, con la ventaja de que además se ejecuta y da siempre el mismo resultado.
En Marienthal
En el cuestionario de clase, «CDMX», «Ciudad de México» y «cdmx» se vuelven una sola categoría con una regla en limpieza.sql. Las horas en blanco quedan como NULL y se cuentan aparte, y un día con más de 24 horas declaradas se marca para revisarlo, no se borra en silencio. El conteo por entidad antes y después muestra que no se perdió ninguna respuesta.
En tu proyecto
Cuenta los faltantes y las variantes de cada categoría en las respuestas de tu prueba piloto. Escribe con el agente tu limpieza.sql, córrelo desde una copia de los crudos, compara el antes y el después y guarda el script en git.
Conceptos
- Datos crudos
- Los datos tal como llegaron del instrumento. Se guardan sin cambios para poder volver a ellos.
- Valor faltante
- Una respuesta que no está. Puede significar que no aplicaba, que no se respondió o que se perdió, y cada caso se trata distinto.
- Recodificar
- Cambiar los valores de una variable según una regla, como juntar tres formas de escribir lo mismo en una sola categoría.
- Script de limpieza
- Un archivo con todas las reglas de limpieza en orden. Correrlo otra vez sobre los mismos crudos da el mismo resultado.
Instrumental
sqlite3 encuesta.db ".backup crudos.db"- Copia en caliente de la base, aunque el cuestionario siga recibiendo respuestas.
SELECT entidad, COUNT(*) FROM respuestas GROUP BY entidad;- Ver cada forma en que se escribió una categoría y cuántas veces aparece.
SELECT COUNT(*) FROM respuestas WHERE horas_no_remuneradas IS NULL;- Contar los faltantes. Se escribe IS NULL: la comparación = NULL nunca es verdadera.
cp crudos.db limpia.db && sqlite3 limpia.db < limpieza.sql- Producir la versión limpia desde los crudos, cada vez que haga falta.
git diff limpieza.sql- Leer qué reglas cambió el agente antes de aceptarlas.
Para tu bitácora
¿Qué regla de tu limpieza cambia una respuesta de forma que la persona que respondió podría no reconocer?