2010-03-06 5 views
8

Je traite beaucoup de texte/données que j'échange entre Python, R, et parfois Matlab. Mon go-to est le fichier de texte plat, mais utilise aussi occasionnellement SQLite pour stocker les données et l'accès de chaque programme (pas encore Matlab). Je n'utilise pas GROUPBY, AVG, etc. dans SQL autant que je fais ces opérations dans R, donc je n'ai pas nécessairement besoin des opérations de base de données.SQLite ou fichier texte à plat?

Pour les applications nécessitant l'échange de données entre les programmes pour utiliser les librairies disponibles dans chaque langue, existe-t-il une bonne règle sur le format/méthode d'échange de données à utiliser (même XML ou NetCDF ou HDF5)? Je sais entre Python -> R il y a rpy ou rpy2 mais je m'interrogeais sur cette question dans un sens plus général - j'utilise de nombreux ordinateurs qui n'ont pas tous rpy2 et qui utilisent aussi quelques autres analyses scientifiques les logiciels qui nécessitent un accès aux données à différents moments (les étapes de traitement et d'analyse sont également séparées).

Répondre

15

Si toutes les langues supportent SQLite - utilisez-le. La puissance de SQL peut ne pas vous être utile en ce moment, mais elle le sera probablement à un certain moment, et vous évite d'avoir à réécrire les choses plus tard lorsque vous déciderez de pouvoir interroger vos données de manière plus compliquée. SQLite sera également probablement beaucoup plus rapide si vous voulez seulement accéder à certains bits de données dans votre banque de données - car cela avec un fichier texte est difficile sans lire le fichier entier (bien que ce ne soit pas impossible).

+0

+1 pour sqlite et d'anticiper une utilisation intensive de la base de données à l'avenir, même si ce n'est pas évident en ce moment. –

+0

Merci - oui, ne pas lire l'ensemble du fichier est certainement son plus. – hatmatrix

5

Un fichier de texte plat (par exemple au format csv) serait la solution la plus portable. Presque chaque programme/bibliothèque peut fonctionner avec ce format: R et Python ont un bon support de csv et si votre jeu de données n'est pas trop grand, vous pouvez même importer le csv dans Excel pour des tâches plus petites. Toutefois, les fichiers texte ne sont pas faciles à manipuler pour les ensembles de données plus volumineux, car vous devez les lire complètement pour presque toutes les opérations (en fonction de la structure de vos données). SQLite vous permet de filtrer les données très facilement (même sans beaucoup de connaissances SQL) et comme vous l'avez déjà mentionné, il peut faire un peu de calcul seul (AVG, SUM, ...). En utilisant le plug-in Firefox SQLiteManager, vous pouvez travailler avec la base de données sur chaque ordinateur sans aucun problème d'installation/configuration et ainsi gérer facilement vos données (import/export, filtre). Par conséquent, je recommande d'utiliser SQLite pour les ensembles de données plus volumineux nécessitant un filtrage important pour extraire les données dont vous avez besoin. Pour les ensembles de données plus petits ou s'il n'est pas nécessaire de sélectionner des sous-ensembles de vos données, un fichier texte plat (csv) devrait convenir.

+0

Merci - csv pour les petits fichiers et SQL pour les fichiers plus volumineux (la possibilité de filtrage est un avantage). Je ne connaissais pas le plug-in Firefox non plus - c'est fantastique. – hatmatrix

+0

1 pour le plug-in SQLiteManager. Je l'utilise, et c'est un épargnant de vie et idéal pour les importations (dans le format cvs;)) –

+0

comment intéressant, en faveur ou texte plat! Cela semble aller à ma préférence (bien qu'un fichier texte plat délimité par TAB pour gérer un menu portably de n'importe quel ordinateur) me recomment-vous un fichier plat, aussi? voir mon nouveau projet d'automatisation de menu http://stackoverflow.com/questions/4524327/php-how-to-automate-building-a-100-ul-li-menuitems-while-keeping-the-menu-s – Sam