Wenn ich an Datenanalyseprojekten arbeite, speichere ich Daten häufig in durch Kommas oder Tabulatoren getrennten (CSV, TSV) Datendateien. Während Daten häufig in ein dediziertes Datenbankverwaltungssystem gehören. Für viele meiner Anwendungen wäre dies eine Übertreibung.
Ich kann CSV- und TSV-Dateien in Excel (oder vermutlich einem anderen Tabellenkalkulationsprogramm) bearbeiten. Das hat Vorteile:
- Tabellenkalkulationen erleichtern die Eingabe von Daten
Es gibt auch mehrere Probleme:
- Das Arbeiten mit CSV- und TSV-Dateien führt zu einer Vielzahl von Warnmeldungen über den Verlust verschiedener Funktionen und darüber, wie nur das aktive Blatt gespeichert wird und so weiter. Daher ist es ärgerlich, wenn Sie nur die Datei öffnen und ein wenig ändern möchten.
- Es werden viele "vermeintlich intelligente" Konvertierungen durchgeführt. Wenn Sie zum Beispiel 12/3 eingeben, wird davon ausgegangen, dass Sie ein Datum eingeben möchten. UPDATE: Ich hätte erwähnen sollen, dass das Datumsbeispiel nur eines von vielen Beispielen ist. Die meisten Probleme scheinen mit einer unangemessenen Konvertierung zu zusammenhängen. Insbesondere Textfelder, die wie Zahlen oder Datumsangaben aussehen, verursachen Probleme.
Alternativ könnte ich direkt mit der Textdatei in einem Standard-Texteditor arbeiten. Dies stellt sicher, dass das, was ich eingebe, das ist, was aufgezeichnet wird. Es ist jedoch sehr umständlich, Daten einzugeben (Spalten nicht aneinanderreihen; es ist schwierig, Daten einfach in mehrere Zellen einzugeben usw.).
Frage
- Was ist eine gute Strategie für die Arbeit mit CSV- oder TSV-Datendateien? Welche Strategie erleichtert die Eingabe und Bearbeitung der Daten und stellt gleichzeitig sicher, dass die von Ihnen eingegebenen Daten korrekt interpretiert werden?
quelle
Antworten:
Wenn Sie mit R vertraut sind, können Sie Ihr Basisdatenframe erstellen und dann die fix () -Funktion verwenden, um Daten einzugeben. Analog zu # 5 können Sie nach dem Einrichten des data.frame eine Reihe von readLines (n = 1) (oder was auch immer) verwenden, um Ihre Daten einzulesen, zu validieren und die Möglichkeit zu bieten, die nächste hinzuzufügen Reihe. Lassen Sie dann die Fixierung zu fixieren (). Unten sehen Sie ein implementiertes Beispiel mit scan ().
Eine andere Option in Excel wäre chaotisch, aber Sie könnten 12/9 eingeben und dann eine andere Spalte auswerten lassen = IFERROR (MONTH (DateEntryCell) / DAY (DataEntryCell), DataEntryCell). Aber dann müssen Sie das Excel-Blatt UND das CSV-Blatt beibehalten, und all die Beschwerden, die Sie beim Schreiben des CSV-Dokuments haben, bleiben bestehen.
Update: Ich habe viel über dieses Problem nachgedacht, weil es ein Problem ist, das ich auch habe. Bisher ist KillinkCSV die beste / einfachste Lösung für die Dateneingabe, die ich bisher gesehen habe . Es handelt sich nicht um "freie" Software, sondern um Shareware mit einer Testdauer von 30 Tagen und einem angemessenen Preis (~ 27 USD). Ich bin mir nicht sicher, wie sehr ich es für die Bearbeitung vorhandener CSVs vertraue - ich habe es einer wahnsinnig großen (und vermutlich gut formatierten) CSV übergeben und es konnten nicht alle Zeilen gelesen werden. Es schien jedoch gut für eine zu funktionieren, die ziemlich groß war (20 MB) und das Problem mit der größeren Datei könnte ein Benutzerfehler meinerseits sein.
R Beispiel:
quelle
csv-mode.el
dank desemacs-goodies-el
Pakets in Debian / Ubuntu bereits installiert habe - ordentlich.Update: [Nachdem ich einen großen Rückstand an E-Mails von R-Help durchlaufen habe] Ich werde an den Thread zu " Das Verhalten von
read.csv()
" erinnert. In diesem Artikel erwähnt Duncan Murdoch, dass er aus einem der Gründe, die Jeromy erwähnt , lieber DIF- Dateien (Data Interchange Format) als CSV-Dateien verwendet. Ich habe es gerade versucht und Gnumeric hat es falsch verstanden (Laden von 12/3 als Datum), aber OpenOffice.org liest dies korrekt und behält die 12/3-Informationen intakt bei. (Möchte jemand dies in MS Excel überprüfen?)DIF-Dateien sind Klartextdateien und können von Tabellenkalkulationen gelesen werden. R (sofern Sie eine aktuelle R-Revision (SVN-Revision> = r53778) verwenden) liest die Daten im richtigen Format ein.
Original : Ich würde versuchen, die Verwendung einer Tabellenkalkulation zum Bearbeiten / Manipulieren von Daten zu vermeiden, wann immer dies möglich ist. Es ist unglaublich schwierig, wenn nicht unmöglich, Änderungen, die Sie an einem vorhandenen Datensatz vornehmen, zu dokumentieren, so dass dies aus Sicht der reproduzierbaren Forschung so gut wie ausgeschlossen ist. Ich verwende höchstens eine Tabelle, um vorhandene Daten schnell anzuzeigen.
Für die Datenverarbeitung neige ich dazu, ein R-Skript zu schreiben, das die rohe CSV-Datei verwendet und alle erforderlichen Verarbeitungsschritte anwendet. Ich kommentiere dieses Skript stark, um genau zu erklären, was ich in jeder Phase mache und warum. Mein Datenanalyseskript würde dann das Datenverarbeitungsskript aufrufen, das die Daten lädt und verarbeitet.
Ist es für die Dateneingabe umständlicher, die Daten in einem Texteditor oder in einer Kalkulationstabelle einzugeben? Ich vermute, dass die Probleme, die Sie bei letzteren ansprechen, nicht die bei der Eingabe von CSV-Daten in einen Texteditor überwiegen.
Sie könnten eine bessere Tabelle ausprobieren. OpenOffice.org lehnt es ab, 12/3 als Datum zu formatieren (oder es konvertiert es in die numerische Darstellung), selbst wenn die Spalte zuerst als "numerisch" formatiert wird. Gnumeric hingegen belässt 12/3 wie es ist, wenn Sie die Spalte zuerst als "numerisch" formatieren.
Sie können OpenOffice.org zwingen, 12/3 nicht als Datum neu zu formatieren, indem Sie
'
den Einträgen ein vorangestelltes a voranstellen. Dies bedeutet ,'12/3
dass es im Arbeitsblatt als 12/3 angezeigt und als Text gespeichert wird. Dies ist wahrscheinlich ziemlich sicher zu bedienen.Sie sind sich nicht sicher, warum Sie möchten, dass 12/3 numerisch als 12/3 in der Textdatei gespeichert wird - wie sollte so etwas wie R dies lesen?
Ihr Kommentar zu Warnungen über den Verlust von Funktionen oder das Speichern des aktiven Arbeitsblatts ist kein wirkliches Problem, oder? (Wenn ja, dann möchte ich deine Probleme in meinem Leben haben ;-)
quelle
Ich schlage vor, dass Sie sich Google Refine (http://code.google.com/p/google-refine/) ansehen. Ich denke, es ist ein sehr gutes Werkzeug zum Bearbeiten von CSV-Dateien
quelle
Ich würde es vermeiden, mit den CSV- und TSV-Dateien zusammenzuarbeiten. Lernen Sie stattdessen, SQL zu verwenden und arbeiten Sie nur mit einem Datamart oder einer Datenbankkopie Ihrer Daten. Sie können auch SAS oder R mit einer Durchgangsverbindung zu Ihrer Datenbank verwenden. Auf diese Weise können Sie Massenaktualisierungen an Ihren Daten vornehmen, anstatt das gefürchtete Suchen und Ersetzen in Excel (oder einem anderen von Ihnen verwendeten Tabellenkalkulationsprogramm) oder das Kopieren und Einfügen durchzuführen, was zu Fehlern führen kann. Der Vorteil der Verwendung eines DB-Systems besteht auch darin, dass Sie die Protokollierung aktivieren und Änderungen, die Sie irrtümlich vorgenommen haben, schnell rückgängig machen können und alle Änderungen überwacht werden können. Darüber hinaus können Integritätsbeschränkungen für Ihre DB-Tabellen festgelegt werden, um sicherzustellen, dass Sie Variablen / Spalten nicht versehentlich auf eine Weise aktualisieren oder ändern, die Sie für unangemessen halten (z. B. bleiben Datumsangaben erhalten, und andere Informationen werden entsprechend typisiert). Ich habe gewonnen'
Wenn Sie Tabellenkalkulationen mögen, weil sie Ihre Dateneingabe irgendwie erleichtern, können Sie diese in jeder Datenbank, die ich jemals verwendet habe, überwinden, indem Sie die Tools / IDEs der grafischen Benutzeroberfläche verwenden, die mit Datenbanken geliefert werden (z. B. Management Studio von Microsoft), oder indem Sie eine verknüpfte Version einlesen von Ihrer Datenbank in ein System, das speziell für die Eingabe Ihrer Daten und die Durchsetzung von Dateneinschränkungen (z. B. verknüpfte Tabellenformulare in Access oder eine benutzerdefinierte Webschnittstelle) entwickelt wurde. Sie können auch andere Programme verwenden, mit denen Sie das Beste aus beiden Welten herausholen und Daten in Excel aktualisieren und diese Änderungen in Ihre Datenbank übertragen können (siehe beispielsweise https://www.youtube.com/watch?v=5iyuF_mDSac ). .
quelle
Nachdem ich diese Frage gestellt hatte, fing ich an, mir CSVed anzuschauen .
Von der Website:
Ich bin mir nicht sicher, ob jemand Erfahrung damit hat.
quelle
Excel ist nicht sehr CSV-freundlich. Wenn Sie beispielsweise "1,300" in Excel eingeben und als durch Kommas getrennten Wert speichern, können Sie das! Dies kann ein großes Problem sein (ich stoße regelmäßig darauf, wenn ich Dateien von anderen empfange).
Ich persönlich verwende OpenOffice.org Calc. Ich verwende auch viele der oben aufgeführten Lösungen, jedoch verfügen viele davon nicht über die Funktionalität und Benutzerfreundlichkeit, die für die reguläre Bearbeitung erforderlich sind. OOO Calc ist viel intelligenter als Excel, obwohl Sie ein Tabellenkalkulationsprogramm sind, müssen Sie immer noch "= 12/3" anstelle von "12/3" eingeben, sonst geben Sie einen Wert anstelle einer Berechnung ein.
Probieren Sie es aus, Sie werden nicht enttäuscht sein.
quelle
Ich mag Gnumeric, weil es nicht so idiotensicher ist wie andere (es schreit nicht nach verlorener Funktionalität) und mit großen Datenmengen arbeitet ... aber ich denke, es ist nur Linux.
quelle
Benutze einfach Rons Editor . Es ist wie Excel ohne die "Hilfe".
Von der Website:
quelle
Ich persönlich verwende gerne die Idee der "relationalen Datenbank", um CSV-Dateien zu verwalten. CSV-Dateien eignen sich für den Datenaustausch, enthalten jedoch keine Geschäftslogik. Meine Erfahrung in der Arbeit mit CSV lautet: "Es gibt viele geschäftliche Iterationen, um die Analyse zu verfeinern." Das Arbeiten nur mit Nur-Text-Dateien (CSV) ist mit vielen Herausforderungen verbunden. Zum Beispiel zeigt die CSV-Datei nicht an, "was Daten einzigartig macht", dh was der "Primärschlüssel für jede Zeile" ist. Dies wird später zu großen Problemen führen, wenn andere Datenquellen verbunden werden müssen.
SQLite ist ein gutes Werkzeug, um CSV in eine relationale Datenbank umzuwandeln. Ähnlich wie CSV ist es einfach auszutauschen und es sind keine Servereinstellungen erforderlich. Noch wichtiger ist, dass es in
R
und anderer Statistiksoftware sehr gut unterstützt wird .Meine Strategie besteht immer darin, "bereinigte Daten" in relationalen Datenbanken zu speichern. Und halten Sie es auf dem Primärschlüssel jeder Tabelle frei.
Hier ist ein Beispiel dafür, was in Wirklichkeit passieren kann (angenommen, wir verkaufen Bücher):
Jetzt können Sie den Vorteil sauberer Daten erkennen und diese in einer relationalen Datenbank aufbewahren. Mit der Kunden-ID say als Primärschlüssel und dem Namen des Buches, dem Autor und der Ausgabe als Primärschlüssel. Es ist sehr einfach, Datenaktualisierungen vorzunehmen und Änderungen nach Bedarf zu übernehmen. Der Primärschlüssel gibt auch "Einschränkungen" und "Plausibilitätsprüfung" für neue kommende Daten an.
quelle
Wenn Sie die Excel-Funktion "Daten importieren" verwenden, können Sie den Datentyp für jede Spalte auswählen. Sie können alle Spalten auswählen und den Datentyp "Text" verwenden.
quelle