Cuando trabajo en proyectos de análisis de datos, a menudo almaceno datos en archivos de datos separados por comas o delimitados por tabulaciones (CSV, TSV). Mientras que los datos a menudo pertenecen a un sistema de gestión de bases de datos dedicado. Para muchas de mis aplicaciones, esto sería exagerar.
Puedo editar archivos CSV y TSV en Excel (o presumiblemente otro programa de hoja de cálculo). Esto tiene beneficios:
- las hojas de cálculo facilitan la entrada de datos
También hay varios problemas:
- Trabajar con archivos CSV y TSV genera una amplia gama de mensajes de advertencia sobre la pérdida de varias funciones y cómo solo se guardará la hoja activa, etc. Por lo tanto, es molesto si solo desea abrir el archivo y hacer un pequeño cambio.
- Realiza muchas conversiones "supuestamente inteligentes". Por ejemplo, si ingresa 12/3, pensará que desea ingresar una fecha. ACTUALIZACIÓN: Debería haber mencionado que el ejemplo de fecha es solo uno de muchos ejemplos; La mayoría de los problemas parecen estar relacionados con la conversión inapropiada. En particular, los campos de texto que parecen números o fechas causan problemas.
Alternativamente, podría trabajar directamente con el archivo de texto en un editor de texto estándar. Esto asegura que lo que ingreso es lo que se registra. Sin embargo, es una forma muy incómoda de ingresar datos (las columnas no se alinean; es difícil ingresar datos simplemente en varias celdas, etc.).
Pregunta
- ¿Cuál es una buena estrategia para trabajar con archivos de datos CSV o TSV? es decir, ¿qué estrategia hace que sea fácil ingresar y manipular los datos y al mismo tiempo garantizar que lo que ingrese se interprete correctamente?
fuente
Respuestas:
Si se siente cómodo con R, puede crear su data.frame básico y luego usar la función fix () para ingresar datos. En la misma línea que el n. ° 5, una vez que configure data.frame, puede usar una serie de readLines (n = 1) (o lo que sea) para ingresar sus datos, validarlos y brindar la oportunidad de agregar el siguiente fila. Luego deje la fijación para arreglar (). Vea un ejemplo implementado a continuación usando scan ().
Otra opción en Excel sería desordenada, pero podría escribir 12/9, luego hacer que otra columna evalúe = IFERROR (MES (DateEntryCell) / DAY (DataEntryCell), DataEntryCell). Pero luego tendrá que mantener la hoja de Excel Y la hoja csv y toda la queja mientras escribe el csv persistirá.
Actualización: He estado hurgando mucho en este problema porque también es un problema que tengo. Hasta ahora, la solución mejor / más fácil para la entrada de datos que he visto hasta ahora es KillinkCSV . No es un software "gratuito", es shareware con una duración de prueba de 30 días y un precio razonable (~ $ 27). Sin embargo, no estoy seguro de cuánto confío en él para editar los CSV existentes: le di un CSV increíblemente grande (y presumiblemente bien formateado) y no pudo leer todas las filas. Sin embargo, parecía funcionar bien para uno que era razonablemente grande (20 MB) y el problema con el archivo más grande puede ser un error de mi parte.
R Ejemplo:
fuente
csv-mode.el
instalado gracias alemacs-goodies-el
paquete en Debian / Ubuntu - ordenado.Actualización: [Después de haber revisado una gran cantidad de correos electrónicos de R-Help], recuerdo el hilo sobre " El comportamiento de
read.csv()
". En esto, Duncan Murdoch menciona que prefiere usar archivos de formato de intercambio de datos (DIF) en lugar de csv por alguna de las razones que menciona Jeromy. Acabo de intentar esto y Gnumeric se equivoca (cargando 12/3 como fecha), pero OpenOffice.org lee esto correctamente y conserva la información 12/3 intacta. (¿A alguien le importa comprobar esto en MS Excel?)Los archivos DIF son texto sin formato y pueden leerse mediante hojas de cálculo y R (siempre que use una revisión R reciente (revisión SVN> = r53778)) leerá los datos en el formato correcto.
Original : siempre que sea posible, trataría de evitar el uso de una hoja de cálculo para la edición / manipulación de datos. Es increíblemente difícil, si no imposible, documentar cualquier cambio que realice en un conjunto de datos existente, de modo que prácticamente lo descarte desde un punto de vista de investigación reproducible. A lo sumo, uso una hoja de cálculo para ver rápidamente los datos existentes.
Para el procesamiento de datos, tiendo a escribir un script R que tomará el archivo csv sin procesar y aplicará todos los pasos de procesamiento necesarios. Comento mucho ese guión para explicar exactamente lo que estoy haciendo en cada etapa y por qué. Mi script de análisis de datos luego llamaría al script de procesamiento de datos que carga y procesa los datos.
Para la entrada de datos, ¿es más complicado ingresar los datos en un editor de texto o en una hoja de cálculo? Sospecho que los problemas que mencionas para este último no superan a los de tratar de ingresar datos CSV en un editor de texto.
Podrías probar una mejor hoja de cálculo; OpenOffice.org se niega a dejar de formatear 12/3 como una fecha (o lo convierte a la representación numérica) incluso si uno formatea la columna como "numérica" primero. Gnumeric, por otro lado, dejará 12/3 como está si formatea la columna como "numérica" primero.
Puede forzar a OpenOffice.org a que no formatee 12/3 como una fecha anteponiendo a
'
a las entradas, es decir'12/3
, se mostrará como 12/3 en la hoja de cálculo y se guardará como texto. Esto es probablemente bastante seguro de usar.No estoy seguro de por qué querría 12/3 almacenado numéricamente como 12/3 en el archivo de texto: ¿cómo debería leer algo como R?
Su comentario sobre las advertencias sobre la pérdida de funciones o solo guardar la hoja activa no son realmente problemas, ¿verdad? (Si lo son, entonces quiero tus problemas en mi vida ;-)
fuente
Le sugiero que busque en google refine (http://code.google.com/p/google-refine/). Creo que es una muy buena herramienta para editar archivos CSV
fuente
Evitaría trabajar con los archivos CSV y TSV todos juntos. En cambio, aprenda a usar SQL y opere solo en una copia de sus datos o una base de datos (DB) de sus datos o puede usar SAS o R con una conexión passthru a su base de datos. De esa manera, puede realizar actualizaciones masivas a sus datos en lugar de hacer el temido buscar y reemplazar en Excel (o cualquier programa de hoja de cálculo que esté usando) o copiar y pegar, lo que puede ser propenso a errores. La ventaja de usar un sistema de base de datos también es que puede habilitar el registro y deshacer rápidamente los cambios que ha realizado si se realizan por error y todos los cambios pueden ser auditados. Además, se pueden colocar restricciones de integridad en las tablas de la base de datos para garantizar que no actualice o cambie por error las variables / columnas de la manera que considere inapropiada (por ejemplo, las fechas se mantienen como fechas y otra información se escribe de forma apropiada). Gané'
Si le gustan las hojas de cálculo porque de alguna manera facilita su entrada de datos, eso se puede superar en todas las bases de datos que he usado utilizando las herramientas de interfaz gráfica de usuario / IDE que vienen con las bases de datos (por ejemplo, Microsoft's Management Studio) o introduciendo una versión vinculada de su base de datos en un sistema diseñado específicamente para ingresar sus datos y aplicar restricciones de datos (por ejemplo, formularios de tablas vinculadas en Access o una interfaz web personalizada). También puede usar otros programas que le permitirán obtener lo mejor de ambos mundos y actualizar datos en Excel y hacer que esos cambios se propaguen a su base de datos (consulte https://www.youtube.com/watch?v=5iyuF_mDSac por ejemplo) .
fuente
Después de hacer esta pregunta, comencé a echar un vistazo a CSVed .
Desde el sitio web:
No estoy seguro si alguien tiene experiencia con eso.
fuente
Excel no es muy amigable con CSV. Por ejemplo, si tuviera que ingresar "1.300" en Excel y guardarlo como un valor separado por comas, ¡se lo permitiría! Esto puede ser un gran problema (lo encuentro regularmente cuando recibo archivos de otros).
Yo personalmente uso OpenOffice.org Calc, también uso muchas de las soluciones enumeradas anteriormente, sin embargo, muchas de ellas no tienen la funcionalidad y la facilidad de uso que se requieren para la edición regular. OOO Calc es mucho más inteligente que Excel, aunque al ser un programa de hoja de cálculo, deberá ingresar "= 12/3" en lugar de "12/3"; de lo contrario, ingresará un valor, en lugar de un cálculo.
Dale un giro, no te decepcionará.
fuente
Me gusta Gnumeric porque no intenta ser tan resistente a los idiotas como los demás (no grita sobre la pérdida de funcionalidad) y funciona con grandes datos ... pero creo que es solo para Linux.
fuente
Solo usa el editor de Ron . Es como Excel sin la 'ayuda'.
Desde el sitio:
fuente
Personalmente, me gusta utilizar la idea de "base de datos relacional" para administrar archivos CSV. Los archivos CSV son buenos para intercambiar datos, pero no contienen lógica empresarial. Mi experiencia de trabajar con CSV es "hay muchas iteraciones con las empresas para refinar el análisis". Trabajar solo con archivos de texto sin formato (CSV) planteará muchos desafíos. Por ejemplo, el archivo CSV no mostrará "lo que hace que los datos sean únicos", es decir, cuál es la "clave principal para cada fila". Esto causará grandes problemas más adelante, cuando tengamos que unirnos a otra fuente de datos.
SQLite es una buena herramienta para convertir CSV en una base de datos relacional, y similar a CSV, es fácil de intercambiar y no se necesita configurar el servidor. Más importante aún, soportó muy bien en
R
y otro software estadístico.Mi estrategia siempre es mantener una "información limpia" en la base de datos relacional. Y manténgalo claro en la clave principal de cada tabla.
Aquí hay un ejemplo de lo que puede suceder en palabras reales (supongamos que estamos vendiendo libros):
Ahora, puede ver la ventaja de los datos limpios y mantenerlos en la base de datos relacional. Con la identificación del cliente decir como clave principal, y el nombre del libro, autor y edición como clave principal. Es muy fácil realizar actualizaciones de datos e incorporar cambios según sea necesario. Además, la clave principal también proporciona "restricciones" y "verificación de la cordura" para los nuevos datos que vienen.
fuente
Si utiliza la función "Importar datos" de Excel, le dará la opción de seleccionar el tipo de datos para cada columna. Puede seleccionar todas las columnas y usar el tipo de datos "Texto".
fuente