acemu:articulos:articulos_tecnicos:adquisicion_y_procesamiento_de_datos:preprocesamiento_datos
Diferencias
Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
acemu:articulos:articulos_tecnicos:adquisicion_y_procesamiento_de_datos:preprocesamiento_datos [2011/02/27 10:29] – luis | acemu:articulos:articulos_tecnicos:adquisicion_y_procesamiento_de_datos:preprocesamiento_datos [2011/02/27 14:56] (actual) – [Preprocesamiento de los datos] luis | ||
---|---|---|---|
Línea 1: | Línea 1: | ||
+ | ===== Preprocesamiento de los datos ===== | ||
+ | Supongamos que recibimos un archivo con los datos recogidos de un ensayo de motor, por ejemplo, los datos del motor MX001 realizados en 21 de marzo del 2010. El archivo de datos se llama '' | ||
+ | |||
+ | '' | ||
+ | |||
+ | Primero veamos en qué formato recibimos los datos. Más allá de que hayamos exportado los datos en un formato **CSV** (**C**omma **S**eparated **V**alues), | ||
+ | |||
+ | Siempre que queramos saber con qué tipo de archivo estamos lidiando, podemos usar el comando **'' | ||
+ | |||
+ | < | ||
+ | # file toma_de_datos_acemumx001.csv | ||
+ | toma_de_datos_acemumx001.csv: | ||
+ | </ | ||
+ | |||
+ | Vemos que **Linux** reconoce el archivo como un archivo **ASCII** pero terminado en **CRLF**. | ||
+ | |||
+ | |||
+ | **CRLF** viene de **C**arriage **R**eturn - **L**ine **F**eed: el viejo código [[http:// | ||
+ | |||
+ | Bajo **DOS** (y por extensión retrógrada, | ||
+ | |||
+ | Bajo **Linux** (o **Unix** en general) se continúa con la tradición de emplear un simple **LF** (Line Feed) para señalar el fin de una línea de texto en un archivo de texto plano. Esto es así desde los principios de la década del 70, cuando se comenzó el desarrollo de las primeras versiones de **Unix**. | ||
+ | |||
+ | Si lo editamos con el procesador de texto **'' | ||
+ | |||
+ | < | ||
+ | " | ||
+ | |||
+ | " | ||
+ | |||
+ | "" | ||
+ | |||
+ | -4.8828E-01, | ||
+ | |||
+ | -4.6875E-01, | ||
+ | </ | ||
+ | |||
+ | donde los " | ||
+ | Empleando el comando '' | ||
+ | |||
+ | < | ||
+ | # od -c toma_de_datos_acemumx001.csv|head | ||
+ | |||
+ | 0000000 | ||
+ | 0000020 | ||
+ | 0000040 | ||
+ | 0000060 | ||
+ | 0000100 | ||
+ | 0000120 | ||
+ | 0000140 | ||
+ | 0000160 | ||
+ | 0000200 | ||
+ | 0000220 | ||
+ | </ | ||
+ | |||
+ | El **" | ||
+ | |||
+ | Comparando con lo que vimos en el editor de textos, identificamos los comandos **CRLF** como la secuencia **" | ||
+ | |||
+ | Evidentemente todos estos códigos deben ser eliminados y el archivo debe convertirse en un simple archivo de texto llano, versión **Linux**. | ||
+ | |||
+ | Para lograr eso primero usamos el comando **'' | ||
+ | |||
+ | < | ||
+ | # dos2unix toma_de_datos_acemumx001.csv | ||
+ | </ | ||
+ | |||
+ | ¡Listo! | ||
+ | |||
+ | Ahora tenemos que eliminar las líneas en blanco adicionales, | ||
+ | |||
+ | Para hacer eso podemos emplear una de las herramientas predilectas de los usuarios **Linux**: **'' | ||
+ | |||
+ | El comando **'' | ||
+ | |||
+ | En nuestro caso lo que queremos es eliminar todas las líneas en blanco, lo que equivale a listar todas las líneas que **NO** están en blanco. Para eso buscamos líneas en blanco y con la opción **" | ||
+ | |||
+ | Una línea en blanco es una línea que comienza y termina y no contiene nada en su interior. Es el equivalente a la secuencia **' | ||
+ | |||
+ | Hay una manera especial de representar eso como una expresión regular: **" | ||
+ | |||
+ | El **" | ||
+ | |||
+ | Así que ejecutamos el comando : | ||
+ | |||
+ | < | ||
+ | # grep -v " | ||
+ | </ | ||
+ | |||
+ | El comando **'' | ||
+ | |||
+ | Si ahora miramos el contenido de **'' | ||
+ | |||
+ | < | ||
+ | # head data.csv | ||
+ | " | ||
+ | " | ||
+ | "" | ||
+ | -4.8828E-01, | ||
+ | -4.6875E-01, | ||
+ | -4.6875E-01, | ||
+ | -4.8828E-01, | ||
+ | -4.8828E-01, | ||
+ | -4.8828E-01, | ||
+ | </ | ||
+ | |||
+ | Vemos que el resultado de estas operaciones nos ha dado un archivo limpio que tiene el formato y los datos que esperamos encontrar en un archivo **CSV**. Observamos en particular que los datos en sí corresponden a 3 columnas: voltaje (en notación científica), | ||
+ | |||
+ | Ahora tenemos el archivo en un formato adecuado para comenzar a procesar los datos propiamente dichos. Eso lo veremos en el siguiente artículo: | ||
+ | |||
+ | [[acemu: |
acemu/articulos/articulos_tecnicos/adquisicion_y_procesamiento_de_datos/preprocesamiento_datos.1298831362.txt.gz · Última modificación: 2011/02/27 10:29 por luis