2010-03-06 14 views
8

Procedo una gran cantidad de texto/datos que intercambio entre Python, R y, en ocasiones, Matlab.SQLite o archivo de texto plano?

Mi ir es el archivo de texto plano, pero también utiliza SQLite de vez en cuando para almacenar los datos y el acceso de cada programa (aunque no de Matlab). No utilizo GROUPBY, AVG, etc. en SQL tanto como hago estas operaciones en R, por lo que no necesito necesariamente las operaciones de la base de datos.

Para aplicaciones que requieren intercambiar datos entre programas para hacer uso de las bibliotecas disponibles en cada idioma, ¿existe una buena regla general sobre qué formato/método de intercambio de datos usar (incluso XML o NetCDF o HDF5)?

Sé que entre Python -> R hay rpy o rpy2 pero me preguntaba sobre esta pregunta en un sentido más general: uso muchas computadoras que no tienen rpy2 y también uso algunas otras piezas de análisis científicos software que requiere acceso a los datos en varias ocasiones (las etapas de procesamiento y análisis también están separadas).

Respuesta

15

Si todos los idiomas son compatibles con SQLite, úselo. El poder de SQL puede no serle útil en este momento, pero probablemente lo sea en algún momento, y le ahorrará tener que reescribir las cosas más adelante cuando decida que desea consultar sus datos de formas más complicadas.

SQLite también será probablemente mucho más rápido si solo quiere acceder a ciertos datos en su almacén de datos, ya que hacerlo con un archivo de texto plano es un reto sin leer todo el archivo (aunque no es imposible).

+0

+1 para sqlite y anticipando el uso extensivo de la base de datos en el futuro, aunque no es obvio en este momento. –

+0

Gracias, sí, no leer el archivo completo definitivamente es su ventaja. – hatmatrix

5

Un archivo de texto plano (por ejemplo, en formato csv) sería la solución más portátil. Casi todos los programas/bibliotecas pueden funcionar con este formato: R y Python tienen una buena compatibilidad con csv y si su conjunto de datos no es demasiado grande, puede incluso importar el csv a Excel para tareas más pequeñas.

Sin embargo, los archivos de texto no son útiles para conjuntos de datos más grandes ya que debe leerlos completamente para casi todas las operaciones (según la estructura de sus datos).

SQLite le permite filtrar los datos muy fácilmente (incluso sin mucha experiencia SQL) y, como ya ha mencionado, puede hacer algunos cálculos por sí mismo (AVG, SUM, ...). Con el complemento SQLiteManager de Firefox puede trabajar con el DB en todas las computadoras sin ningún problema de instalación/configuración y así administrar sus datos fácilmente (importar/exportar, filtrar).

Así que recomendaría utilizar SQLite para conjuntos de datos más grandes que necesitan una gran cantidad de filtrado para extraer los datos que necesita. Para conjuntos de datos más pequeños o si no hay necesidad de seleccionar subconjuntos de sus datos, un archivo de texto plano (csv) debería estar bien.

+0

Gracias: csv para archivos pequeños y SQL para archivos más grandes (la posibilidad de filtrar es una ventaja). Tampoco sabía nada acerca del complemento de Firefox; eso es fantástico. – hatmatrix

+0

1 para el complemento SQLiteManager. Lo uso, y es un salvavidas y excelente para las importaciones (en formato cvs;)) –

+0

¡qué interesante, a favor o en texto plano! Parece que va a mi preferencia (aunque un archivo de texto plano delimitado por TAB para administrar un menú portátil desde cualquier computadora) ¿me recomiendas también un archivo plano? ver mi nuevo proyecto de automatización de menú http://stackoverflow.com/questions/4524327/php-how-to-automate-building-a-100-ul-li-menuitems-while-keeping-the-menu-s – Sam

Cuestiones relacionadas