CSV Viewer/Editor ohne Zeilenlimit

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
buhtz
Beiträge: 1105
Registriert: 04.12.2015 17:54:49
Kontaktdaten:

CSV Viewer/Editor ohne Zeilenlimit

Beitrag von buhtz » 17.08.2021 09:40:04

Meine derzeitige Tätigkeit kratzt ein bisschen am DataScience Bereich, würde mich aber keines Wegs als DataScientist bezeichnen!
Jedenfalls werden mir Rohdaten in Form von CSV-Dateien geliefert, auf deren Format und Inhalt ich nur sehr begrenzt Einfluss nehmen kann/darf.

Natürlich bearbeite ich diese Dateien primär mit Scripten und den üblichen Auswertungs-Tools (Debianpython3-pandas und alternativ auch R).

Manchmal muss man aber so eine Datei einfach in Augenschein nehmen und durchscrollen, wie in einer Tabellenkalkulation. Gar nicht groß zum Bearbeiten, sondern nur zum Durchsehen. Excel und LibreOffice Calc haben ein Zeilenlimit (knapp über 1 Million Zeilen), geben eine Warnung aus und schneiden den Rest der Datei eben ab. Ist OK, weil das sind ja keine DataScience Tools.

Was wäre die Alternative? Ich möchte die CSV-Datei wie in einer Tabellen-Kalkulation sehen können. Dazu Spaltenbreiten per Maus verändern usw. Zoomen ist auch sehr wichtig für mich; oder wenigstens ein Verändern der Schriftgröße. Damit erkenne ich ggf. Muster.

Den DB SQLite Browser hatte ich schon im Sinn. Aber hier muss eine CSV Datei wirklich importiert werden. Dabei können Fehler passieren bzw. Fehler in der CSV Datei übersehen werden. OK, bei Excel passiert das auch schnell. Aber die Import Funktion von LibreOffice beispielsweise ist ziemlich akkurat und bemerkt auch die blödesten Fehler.

Es geht hier in meinem Umfeld normalerweise um Dateien mit 1-3 Millionen Zeilen und 30-50 rows. Es kam aber auch schon mal eine Datei mit 150 Millionen Zeilen (~15 GB unkomprimiert auf der HDD).
Debian 11 & 12; Desktop-PC, Headless-NAS, Raspberry Pi 4
Teil des Upstream Betreuer Teams von Back In Time (Debianbackintime)

schwedenmann
Beiträge: 5528
Registriert: 30.12.2004 15:31:07
Wohnort: Wegberg

Re: CSV Viewer/Editor ohne Zeilenlimit

Beitrag von schwedenmann » 17.08.2021 09:51:25


Benutzeravatar
Tintom
Moderator
Beiträge: 3033
Registriert: 14.04.2006 20:55:15
Wohnort: Göttingen

Re: CSV Viewer/Editor ohne Zeilenlimit

Beitrag von Tintom » 17.08.2021 10:13:54

Ich kann leider nichts zu dieser Diskussion beitragen, weil ich bei diesen Datenmengen wegen schlechter Erfahrungen die Finger von Excel & Co. lasse und lieber direkt mit Datenbanken, zur Not auch mit den Standardprogrammen auf der Kommandozeile arbeite. Eine Sache interessiert mich dann aber doch:
Aber die Import Funktion von LibreOffice beispielsweise ist ziemlich akkurat und bemerkt auch die blödesten Fehler.
Wie stellst du denn sicher, dass bei diesen Datenmengen die Daten korrekt importiert werden? Wie sieht deine Kontrolle aus?

buhtz
Beiträge: 1105
Registriert: 04.12.2015 17:54:49
Kontaktdaten:

Re: CSV Viewer/Editor ohne Zeilenlimit

Beitrag von buhtz » 17.08.2021 10:32:47

Tintom hat geschrieben: ↑ zum Beitrag ↑
17.08.2021 10:13:54
Aber die Import Funktion von LibreOffice beispielsweise ist ziemlich akkurat und bemerkt auch die blödesten Fehler.
Wie stellst du denn sicher, dass bei diesen Datenmengen die Daten korrekt importiert werden? Wie sieht deine Kontrolle aus?
OK, das war zu optimistisch formuliert.

Im Import-Diaglog von LibreOffice Calc gibt es doch dieses Vorschaufenster. Natürlich hilft das nicht bei 150 Mill. Zeilen alle Fehler zu erkennen. ;) Eigentlich ist das Sicherheitsgefühl mit LO auch nur subjektiv.

Tatsächlich kann man auch pandas.read_csv() nicht vertrauen.
Wenn man den Header bzw. die Anzahl der Columns fest vorgibt, meckert Pandas zwar, wenn eine Zeile mehr Spalten hat, aber bleibt ruhig, wenn eine Zeile weniger Spalten hat. Das wäre by-design so - wurde mir im BugReport zurückgemeldet. Darauf zu prüfen, ob in der letzten Spalte missing-values (Na) sind, hilft auch nicht viel, wenn man das von den Daten so auch erwartet, also missings dort erlaubt sind. Am Ende würde es helfen, wenn man als letzte Spalte immer eine feste Spalte (z.B. _LAST_COLUMN) mit festen Wert (z.B. row-end) hätte, auf den man nach dem import prüfen könnte.

Also mache ich vor dem ersten Import einen Idiotentest, öffne die Datei mit Pythons csv Modul und zähle selbst die Anzahl der Felder in jeder Zeile.
Debian 11 & 12; Desktop-PC, Headless-NAS, Raspberry Pi 4
Teil des Upstream Betreuer Teams von Back In Time (Debianbackintime)

Antworten