Lorsque je travaille sur des projets d'analyse de données, je stocke souvent des données dans des fichiers de données séparés par des virgules ou des tabulations (CSV, TSV). Alors que les données appartiennent souvent à un système de gestion de base de données dédié. Pour bon nombre de mes demandes, ce serait exagérer.
Je peux modifier des fichiers CSV et TSV dans Excel (ou probablement un autre programme de feuille de calcul). Cela présente des avantages:
- les feuilles de calcul facilitent la saisie des données
Il existe également plusieurs problèmes:
- L'utilisation de fichiers CSV et TSV entraîne un large éventail de messages d'avertissement concernant la perte de diverses fonctionnalités et la façon dont seule la feuille active sera enregistrée, etc. Ainsi, c'est ennuyeux si vous voulez juste ouvrir le fichier et faire un petit changement.
- Il effectue de nombreuses conversions «supposées intelligentes». Par exemple, si vous entrez 12/3, il pensera que vous voulez entrer une date. MISE À JOUR: J'aurais dû mentionner que l'exemple de date n'est qu'un exemple parmi tant d'autres; la plupart des problèmes semblent être liés à une conversion inappropriée. En particulier, les champs de texte qui ressemblent à des nombres ou des dates posent des problèmes.
Alternativement, je pourrais travailler directement avec le fichier texte dans un éditeur de texte standard. Cela garantit que ce que j'entre est ce qui est enregistré. Cependant, c'est une façon très maladroite de saisir des données (les colonnes ne s'alignent pas; il est difficile de saisir des données simplement dans plusieurs cellules, etc.).
Question
- Quelle est la bonne stratégie pour travailler avec des fichiers de données CSV ou TSV? c'est-à-dire, quelle stratégie facilite la saisie et la manipulation des données tout en garantissant que ce que vous saisissez est effectivement interprété correctement?
la source
Réponses:
Si vous êtes à l'aise avec R, vous pouvez créer votre data.frame de base, puis utiliser la fonction fix () dessus pour saisir des données. Dans la même veine que # 5, une fois que vous avez configuré le data.frame, vous pouvez utiliser une série de readLines (n = 1) (ou autre) pour obtenir vos données, les valider et vous donner la possibilité d'ajouter le suivant rangée. Laissez ensuite la fixation à fixer (). Voir un exemple implémenté ci-dessous utilisant scan ().
Une autre option dans Excel serait compliquée, mais vous pouvez taper 12/9, puis avoir une autre colonne evaluer = IFERROR (MONTH (DateEntryCell) / DAY (DataEntryCell), DataEntryCell). Mais alors vous devrez maintenir la feuille Excel ET la feuille csv et toutes les plaintes pendant que vous écrivez le csv persisteront.
Mise à jour: J'ai beaucoup fouillé sur ce problème car c'est aussi un problème que j'ai. Jusqu'à présent, la solution la meilleure / la plus simple pour la saisie de données que j'ai vue jusqu'à présent est KillinkCSV . Ce n'est pas un logiciel "gratuit", c'est un shareware avec une durée d'essai de 30 jours et un prix raisonnable (~ 27 $). Je ne sais pas à quel point je lui fais confiance pour éditer les CSV existants - je lui ai remis un CSV incroyablement grand (et probablement bien formaté) et il n'a pas réussi à lire toutes les lignes. Cependant, cela semblait bien fonctionner pour un fichier raisonnablement volumineux (20 Mo) et le problème avec le fichier plus volumineux peut être une erreur de ma part.
Exemple R:
la source
csv-mode.el
installé grâce auemacs-goodies-el
paquet dans Debian / Ubuntu - soigné.Mise à jour: [Après avoir parcouru un important arriéré de courriels de R-Help], je me souviens du fil de discussion sur " Le comportement de
read.csv()
". Dans ce document, Duncan Murdoch mentionne qu'il préfère utiliser les fichiers DIF (Data Interchange Format) au lieu de csv pour certaines des raisons que Jeromy mentionne. Je viens d'essayer cela et Gnumeric se trompe (en chargeant le 12/3 comme date), mais OpenOffice.org le lit correctement et préserve les informations du 12/3 intactes. (Quelqu'un veut-il vérifier cela dans MS Excel?)Les fichiers DIF sont en texte brut et peuvent être lus par des feuilles de calcul et R (tant que vous utilisez une révision R récente (révision SVN> = r53778)) lira les données dans le format correct.
Original : j'essaierais d'éviter d'utiliser une feuille de calcul à l'arrêt complet pour l'édition / la manipulation des données dans la mesure du possible. Il est incroyablement difficile, voire impossible, de documenter les modifications que vous apportez à un ensemble de données existant, de sorte que cela l'exclut pratiquement d'un point de vue de recherche reproductible. Tout au plus, j'utilise une feuille de calcul pour visualiser rapidement les données existantes.
Pour le traitement des données, j'ai tendance à écrire un script R qui prendra le fichier csv brut et appliquera toutes les étapes de traitement nécessaires. Je commente fortement ce script pour expliquer exactement ce que je fais à chaque étape et pourquoi. Mon script d'analyse de données appelle alors le script de traitement des données qui charge et traite les données.
Pour la saisie de données, est-ce plus compliqué de saisir les données dans un éditeur de texte ou dans une feuille de calcul? Je soupçonne que les problèmes que vous mentionnez pour ce dernier ne l'emportent pas sur ceux d'essayer d'entrer des données CSV dans un éditeur de texte.
Vous pourriez essayer une meilleure feuille de calcul; OpenOffice.org refuse d'arrêter le formatage 12/3 en tant que date (ou il le convertit en représentation numérique) même si l'on formate d'abord la colonne en "numérique". Gnumeric en revanche laissera 12/3 tel qu'il est si vous formatez d'abord la colonne en "numérique".
Vous pouvez forcer OpenOffice.org à ne pas reformater 12/3 en tant que date en ajoutant un préfixe
'
aux entrées, c'est-à-dire qu'il'12/3
sera affiché comme 12/3 dans la feuille de calcul et enregistré sous forme de texte. C'est probablement assez sûr à utiliser.Vous ne savez pas pourquoi vous souhaitez que 12/3 soit stocké numériquement sous la forme 12/3 dans le fichier texte - comment quelque chose comme R devrait-il lire ceci?
Vos commentaires sur les avertissements concernant la perte de fonctionnalités ou l'enregistrement de la feuille active ne sont pas vraiment des problèmes, n'est-ce pas? (S'ils le sont, alors je veux vos problèmes dans ma vie ;-)
la source
Je vous suggère de regarder google affiner (http://code.google.com/p/google-refine/). Je pense que c'est un très bon outil pour éditer des fichiers CSV
la source
J'éviterais de travailler avec les fichiers CSV et TSV tous ensemble. Au lieu de cela, apprenez à utiliser SQL et à n'opérer que sur un datamart ou une copie de base de données (DB) de vos données ou vous pouvez utiliser SAS ou R avec une connexion relais à votre base de données. De cette façon, vous pouvez effectuer des mises à jour en masse de vos données au lieu de faire la recherche et le remplacement redoutés dans Excel (ou tout autre programme de feuille de calcul que vous utilisez) ou de copier et coller qui peuvent être sujets à des erreurs. L'avantage de l'utilisation d'un système de base de données est également que vous pouvez activer la journalisation et annuler rapidement les modifications que vous avez apportées si elles sont faites par erreur et que toutes les modifications peuvent être auditées. De plus, des contraintes d'intégrité peuvent être placées sur vos tables de base de données pour vous assurer de ne pas mettre à jour ou modifier par erreur des variables / colonnes d'une manière que vous jugez inappropriée (par exemple, les dates restent telles que les dates et d'autres informations sont converties de manière appropriée). J'ai gagné'
Si vous aimez les feuilles de calcul parce qu'elles facilitent en quelque sorte votre saisie de données, cela peut être surmonté dans toutes les bases de données que j'ai jamais utilisées en utilisant les outils d'interface utilisateur graphique / IDE fournis avec les bases de données (par exemple Microsoft's Management Studio) ou en extrayant une version liée de votre base de données dans un système spécialement conçu pour saisir vos données et appliquer les contraintes de données (par exemple, les formulaires de table liés dans Access ou une interface Web personnalisée). Vous pouvez également utiliser d'autres programmes qui vous permettront d'obtenir le meilleur des deux mondes et de mettre à jour les données dans Excel et de faire propager ces modifications dans votre base de données (voir https://www.youtube.com/watch?v=5iyuF_mDSac par exemple) .
la source
Après avoir posé cette question, j'ai commencé à jeter un œil à CSVed .
Depuis le site Web:
Je ne sais pas si quelqu'un en a l'expérience.
la source
Excel n'est pas très convivial pour CSV. Par exemple, si vous deviez saisir "1 300" dans Excel et l'enregistrer en tant que valeur séparée par des virgules, cela vous permettrait! Cela peut être un gros problème (je le rencontre régulièrement lors de la réception de fichiers par d'autres).
J'utilise personnellement OpenOffice.org Calc, j'utilise également bon nombre des solutions énumérées ci-dessus, mais bon nombre d'entre elles n'ont pas les fonctionnalités et la facilité d'utilisation requises pour une édition régulière. OOO Calc est beaucoup plus intelligent qu'Excel, bien qu'étant un tableur, vous devrez toujours entrer "= 12/3" au lieu de "12/3" sinon vous entrerez une valeur, plutôt qu'un calcul.
Donnez-lui un tourbillon, vous ne serez pas déçu.
la source
J'aime Gnumeric car il n'essaie pas d'être aussi résistant aux idiots que les autres (il ne crie pas sur les fonctionnalités perdues) et fonctionne avec de grandes données ... pourtant je pense que c'est uniquement Linux.
la source
Utilisez simplement l'éditeur de Ron . C'est comme Excel sans l'aide.
Depuis le site:
la source
Personnellement, j'aime utiliser l'idée de "base de données relationnelle" pour gérer les fichiers CSV. Les fichiers CSV sont bons pour l'échange de données, mais ne contiennent aucune logique métier. Mon expérience de travail avec CSV est "il existe de nombreuses itérations avec les entreprises pour affiner l'analyse". Travailler uniquement avec des fichiers texte brut (CSV) posera de nombreux défis. Par exemple, le fichier CSV n'affichera pas "ce qui rend les données uniques", c'est-à-dire quelle est la "clé primaire de chaque ligne". Cela posera de gros problèmes plus tard, lorsque nous aurons d'autres sources de données à rejoindre.
SQLite est un bon outil pour faire de CSV une base de données relationnelle et, comme CSV, il est facile à échanger et aucune configuration de serveur n'est nécessaire. Plus important encore, il a très bien pris en charge
R
les logiciels statistiques et autres.Ma stratégie est toujours de maintenir des "données nettoyées" dans la base de données relationnelle. Et restez clair sur la clé primaire de chaque table.
Voici un exemple de ce qui peut arriver en vrai mot (supposons que nous vendons des livres):
Maintenant, vous pouvez voir l'avantage des données propres et les conserver dans la base de données relationnelle. Avec l'ID client par exemple comme clé primaire et le nom du livre, l'auteur et l'édition comme clé primaire. Il est très facile de faire des mises à jour de données et d'incorporer des modifications au besoin. De plus, la clé primaire donne également des «contraintes» et un «contrôle d'intégrité» pour les nouvelles données à venir.
la source
Si vous utilisez la fonction «Importer des données» d'Excel, elle vous donnera la possibilité de sélectionner le type de données pour chaque colonne. Vous pouvez sélectionner toutes les colonnes et utiliser le type de données "Texte".
la source