<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Los conjuntos de datos perfectos son raros. ¡Más aún si se ingresan manualmente!Afortunadamente, JMP ofrece herramientas de limpieza de datos para ayudar a limpiar nuestro desorden. Los ejemplos a continuación demuestran algunos (¡pero definitivamente no todos!) Métodos para encontrar y corregir dos errores comunes de entrada manual.
Primero, configuremos un conjunto de datos rápido para trabajar. Deberá copiar el siguiente script en una nueva ventana de script y hacer clic en el icono de ejecutar script.Imagine que estos datos son medidas magnéticas ingresadas manualmente del espesor del recubrimiento (mm) de 10 ubicaciones de conjunto a lo largo de 10 barras de acero con recubrimiento en polvo. El espesor es siempre menor que 1 debido a los controles del proceso.Es posible tener manchas desnudas sin recubrimiento de espesor 0.
// Configurar matriz y tabla de datos para el ejercicio de limpieza de datos
Nombres predeterminados aquí ( 1 ) ;
// Cargar matriz aleatoria con errores de recolección de datos simulados
rndMat = [
0,35 830 0,71 0,91 0,74 . 0,71 0,92 0,96 0,28 ,
0,50 0,93 0.48 0,13 0,70 0,04 0,25 . 0,99 0,98 ,
0,26 0,19 750 0,22 0,97 0,35 0,30 0,25 0,64 . ,
0,19 0,19 0,53 0,31 0,58 0,65 0,64 0,53 0,02 0,35 ,
640 0,27 0.48 0,63 0,70 0,26 0,83 0,78 0,12 0,30 ,
0,54 0,38 0.47 . 0,89 0,71 0,91 . 0,74 0,16 ,
0,38 0,09 0,18 0,87 0,38 0,45 0,97 0,13 0,08 0,03 ,
0,75 0,17 0,33 580 0,88 0,63 0,14 0,18 0.40 0,79 ,
0,59 0.48 0,19 0,71 0,70 0,01 . 0,52 0,01 0,41 ,
0,44 0,07 0,87 0,34 0,05 0,64 0,11 1,00 0,70 0,91
] ;
// Hacer una tabla de datos a partir de una matriz aleatoria
dtNuevo = Como tabla ( rndMat ) ;
Ahora busquemos errores trazando y resumiendo nuestros datos. Me estoy centrando en la limpieza de datos en este ejemplo, pero en la vida real también estoy adquiriendo una comprensión básica de mis datos. Recuerde, antes de cualquier análisis PDD (grafique los datos ficticios) !!

La plataforma de distribución es una gran herramienta para detectar anomalías en los datos. Observe que hay entradas 1000 veces mayores de lo esperado en nuestro conjunto de datos. Personalmente encuentro datos en los que los inspectores / operadores pierden el decimal o incluso eligen omitir todos los lugares decimales para ser más rápidos. Es una buena idea verificar errores como este con los operadores antes de realizar cambios.
Columns Viewer es una herramienta de resumen rápida y sencilla. La siguiente imagen muestra una tabla de resumen de todas las columnas. Observe que hay 10 valores perdidos en nuestros datos. La falta de valores donde deberían estar los ceros es un error de entrada manual muy común, incluso más común que los decimales perdidos o perdidos en mi experiencia. Esto puede parecer trivial con nuestra pequeña tabla donde podemos ver fácilmente todos los valores faltantes. ¡Pero imagina la dificultad si nuestro conjunto de datos tiene miles o incluso millones de filas de datos! Me vienen a la mente montones de heno y agujas.
Las estadísticas resumidas se pueden usar de la misma manera que usamos la plataforma de distribución anterior. Observe que los valores máximos para col1-col4 son 100 veces mayores de lo esperado, lo mismo que aprendimos en distribución.

Nuestro análisis exploratorio ha identificado 2 tipos de errores en nuestros datos. Faltan decimales y valores perdidos que deberían ser ceros.¡Ahora vamos a arreglarlos!En una tabla pequeña como la nuestra, es bastante fácil realizar los cambios necesarios manualmente en la tabla de datos. Vamos a suponer que este no es el caso y que se necesitan métodos más eficientes.
La utilidad Recode en JMP proporciona una opción de menú para cambiar valores en una tabla de datos. Deben seleccionarse columnas para acceder a la utilidad. Ambos de nuestros errores se pueden corregir en recodificar.


Ahora imagine que nuestro conjunto de datos tiene 10000 filas y 100 columnas. De repente, recodificar no es tan atractivo. Afortunadamente para nosotros, JSL (lenguaje de scripting JMP) se puede utilizar para resolver nuestro problema de manera rápida y eficiente.
Primero, busquemos y corrijamos todos nuestros datos con decimales faltantes. Es fácil imaginar la automatización de una rutina de búsqueda y reparación manual con bucles. Como verá, esto hace el trabajo.
Para mantener este ejercicio simple y claro, cierre la tabla de datos y la ventana del script. Pase la secuencia de comandos a continuación en una nueva ventana de secuencia de comandos y ejecútela.
Nombres predeterminados aquí ( 1 ) ;
// Cargar matriz aleatoria con errores de recolección de datos simulados
rndMat = [
0,35 830 0,71 0,91 0,74 . 0,71 0,92 0,96 0,28 ,
0,50 0,93 0.48 0,13 0,70 0,04 0,25 . 0,99 0,98 ,
0,26 0,19 750 0,22 0,97 0,35 0,30 0,25 0,64 . ,
0,19 0,19 0,53 0,31 0,58 0,65 0,64 0,53 0,02 0,35 ,
640 0,27 0.48 0,63 0,70 0,26 0,83 0,78 0,12 0,30 ,
0,54 0,38 0.47 . 0,89 0,71 0,91 . 0,74 0,16 ,
0,38 0,09 0,18 0,87 0,38 0,45 0,97 0,13 0,08 0,03 ,
0,75 0,17 0,33 580 0,88 0,63 0,14 0,18 0.40 0,79 ,
0,59 0.48 0,19 0,71 0,70 0,01 . 0,52 0,01 0,41 ,
0,44 0,07 0,87 0,34 0,05 0,64 0,11 1,00 0,70 0,91
] ;
// Hacer una tabla de datos a partir de una matriz aleatoria
dtNuevo = Como tabla ( rndMat ) ;
myCols = N Cols ( dtNuevo ) ;
por ( q = 1 , q <= myCols , q ++,
columna = Columna ( q ) ;
Por cada fila ( columna [] =
Si (
columna [] > 100 , columna [] / 1000 , columna []
) ;
Si (
Está perdido ( columna []) == 1 , columna [] = 0 , columna []
) ;
) ;
) ;
¡Los lugares decimales eliminados y los ceros faltantes ahora están arreglados!Este método es legítimo pero prolongado y puede ser lento con conjuntos de datos más grandes.En mi opinión, la indexación lógica es una mejor manera de hacerlo. En JSL, la indexación lógica se logra mediante la función Loc (). Esto será un poco más fácil de mostrar que de contar.
Cierre la tabla y la ventana del script (guarde si lo desea).Pegue el siguiente script en una nueva ventana de script. Haga clic en ejecutar secuencia de comandos.
Nombres predeterminados aquí ( 1 ) ;
// Cargar matriz aleatoria con errores de recolección de datos simulados
rndMat = [
0,35 830 0,71 0,91 0,74 . 0,71 0,92 0,96 0,28 ,
0,50 0,93 0.48 0,13 0,70 0,04 0,25 . 0,99 0,98 ,
0,26 0,19 750 0,22 0,97 0,35 0,30 0,25 0,64 . ,
0,19 0,19 0,53 0,31 0,58 0,65 0,64 0,53 0,02 0,35 ,
640 0,27 0.48 0,63 0,70 0,26 0,83 0,78 0,12 0,30 ,
0,54 0,38 0.47 . 0,89 0,71 0,91 . 0,74 0,16 ,
0,38 0,09 0,18 0,87 0,38 0,45 0,97 0,13 0,08 0,03 ,
0,75 0,17 0,33 580 0,88 0,63 0,14 0,18 0.40 0,79 ,
0,59 0.48 0,19 0,71 0,70 0,01 . 0,52 0,01 0,41 ,
0,44 0,07 0,87 0,34 0,05 0,64 0,11 1,00 0,70 0,91
] ;
// Encuentre la ubicación de los errores y reemplácelos con los valores correctos
rndMat [ Loc ( rndMat > 100 )] = rndMat [ Loc ( rndMat > 100 )] : / 1000 ;
rndMat [ Loc ( Está perdido ( rndMat ))] = 0 ;
dtNuevo = Como tabla ( rndMat ) ;
¡Mira los resultados! ¡Arreglamos tanto el decimal faltante como los ceros faltantes con 2 líneas de código y sin bucles! Tenga en cuenta que para evitar bucles, generé una nueva tabla de datos con los valores correctos.Si desea mantener una tabla existente, se necesita un bucle para asignar valores a cada columna en la tabla de datos.Los dejaré experimentar con esto por su cuenta.

Esto es lo que pasó.Loc (rndMat> 100) es una matriz de índices en rndMat donde los valores son mayores que 100. rndMat [ Loc ( rndMat > 100 )] = rndMat [ Loc ( rndMat > 100 )] : / 1000 reemplaza los valores en estos índices con el valor actual dividido por 1000. Reemplazar los valores perdidos es más simple ya que solo reemplazamos los valores perdidos con cero.
Puede encontrar más información sobre la función Loc () en el Capítulo 7 de la guía de secuencias de comandos. La guía de secuencias de comandos se puede encontrar en Help_Books.La indexación lógica tiene una utilidad más allá de la limpieza de datos y vale la pena estudiarla si es nuevo para usted.
Espero que este ejercicio les ayude a todos a desbloquear más el poder de JMP.
¡Disfrutar!