Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comp.lang.python > #4553

Re: [Python-de] Wie Key-Value Sets speichern?

From Achim Herwig <python@wodca.de>
Newsgroups de.comp.lang.python
Subject Re: [Python-de] Wie Key-Value Sets speichern?
Date 2016-09-29 08:24 +0200
Message-ID <mailman.90.1475130779.2302.python-de@python.org> (permalink)
References <5451e46e-5eca-e89d-61ef-2030e6aee36e@xgm.de> <95c64ce4-f337-280c-f339-01a2b58cfd36@inqbus.de> <68511A44-149A-47C1-9AC8-7F7A4F259FE3@wodca.de>

Show all headers | View raw


Hallo,

wenn die Daten unterschiedlich sind, kann es auch sinnvoll sein, SQLite als Persistenz-Format einzusetzen. Dann kannst Du Dir bequem für jeden Record-Typen eine eigene Tabelle schreiben und später beim Einlesen die Daten selektieren.

VG, Achim.

> Am 28.09.2016 um 22:58 schrieb Dr. Volker Jaenisch <volker.jaenisch@inqbus.de>:
> 
> Servus Florian!
> 
> Am 28.09.2016 um 00:09 schrieb Florian Lindner:
>> Dabei will ich folgendes:
>> 
>> - Die Datei soll menschen-lesbar sein
>> 
>> - Eingelesen werden soll es mit Python um dann z.B. mit numpy weiterverarbeitet werden.
>> 
>> Wie würde nun ein geeignetes Datenformat ausschauen, was ich dann auch problemlos mit Python einlesen kann?
> Ich frage mich, was Du mit dem Ganzen eigentlich bezweckst.
> 
> Du willst aus C++ in ein menschenlesbares Datenformat schreiben um es
> dann zu Parsen um es dann mit Numpy zu verarbeiten?
> Das erscheinen mir gleich zwei Widersprüche zu sein:
> Wenn Du numpy brauchst sind es viele Daten. Wenn Du viele Daten hast,
> will die sich ein Mensch nicht mehr anschauen. Und Du willst keinen
> Parser dafür bauen, weil der a) langsam sein wird und b) Du dir wirklich
> sicher sein musst, dass er richtig funktioniert. Was bei vielen Daten
> nicht ganz einfach zu überprüfen ist.
> 
> Dein Daten sind irregulär, also keine rechteckige Matrix. Daher ist
> Numpy sowieso nicht gut geeignet diese Daten direkt zu verarbeiten.
> Warum willst Du also Dinge, die sich unterscheiden in einer Datei
> aneinander hängen, um sie später für die Verarbeitung in Numpy wieder
> auseinander zu pfriemeln.
> 
> Wenn Du an Deiner "Alles in einen File"-Strategie festhält, wirst  Du
> beim Einlesen sowieso eine Art von Dispatching machen müssen um die
> (sofern ich verstanden habe homogenen) Daten der einzelnen Runs wieder
> aus Deinem File zu extrahieren.
> 
> Wir verarbeiten für einen großen KFZ-Hersteller CAN-Bus-Daten. Das sind
> Signale die je nach Datenquelle anders kodiert sind. Also z.B. "Blinker
> Hinten Rechts" hat nur ein paar Zustands-Bits. Dagegen ist die Drehzahl,
> das Drehmoment und der Öldruck, des Motors ein Fließkomma-Wert. Alle
> diese Daten kommen als ein großer Datenstrom an. Das Problem ist also
> dem Deinigen evtl. ähnlich gelagert. Jede da draußen mit CAN-Daten
> beschäftigte Firma baut sich, wie Du es auch vor hast, ein eigenes
> Datenformat, um mit den Daten umzugehen.
> 
> Wir wollten nicht den gleichen Fehler machen und haben ein
> standardisiertes Datenformat genommen. Wir dispatchen die CAN-Daten nach
> der Datenquelle jeweils in eine Tabelle eines HDF5-Files. Es gibt also
> eine Tabelle für den "Blinker hinten rechts" und eine andere Tabelle für
> die Motordaten. Jede dieser HDF5-Tabellen hat dabei eine andere
> Struktur. HDF5 ist ein sehr flexibles selbst dokumentierendes,
> standardisiertes, komprimiertes, binäres, plattformunabhägiges
> Datenformat welches mit zwei Python-Befehlen eine Tabelle in einen numpy
> Array lesen/schreiben kann [1]. Ein HDF5-File ist aufgebaut wie ein
> Dateisystem mit Ordnern in denen Tabellen (und beliebige andere Dinge
> wie z.B. Grafiken) liegen können. Noch dazu kann mit mehr als
> C-Geschwindigkeit in gigantisch großen Datenbeständen (größer als der
> verfügbare RAM) aus Python heraus gesucht und gefiltert werden.
> 
> HDF5 ist erstmal nicht menschenlesbar - was meiner Meinung nach auch in
> den seltensten Fällen nötig oder wünschenswert ist. Aber es gibt mit
> hdf5dump und hdfview [2] plattformunabhängige Werkzeuge um HDF5-Files
> konfortablel zu betrachten oder in menschenlesbare Form zu bringen. Die
> Python Charting-Software VEUSZ [3] kann HDF5-Files direkt einlesen und
> verarbeiten, wie auch alle anderen größeren Charting-Programme
> Import-Filter für HDF5 anbieten. Ich habe mit Aesir [4] einen
> QT-Python-HDF5-Viewer programmiert der deutlich schneller als HDFView
> ist. Auch haben wir Datenklassen für Plone programmiert, um direkt im
> Browser durch HDF5-Files zu navigieren und deren Tabellen als
> Web-Tabellen und Charts darzustellen zu können [5]. Das ist der große
> Vorteil eines gut dokumentierten und standardisierten Datenformats, es
> ist eine gute Basis um selber darum ein Ökosystem zu entwickeln.
> 
> Ich hoffe Du erzählst uns ein bisschen mehr über Dein Projekt, dann
> können wir Dir sicher bessere Ratschläge geben als JSON, YAML, welche
> beide mit Numpy nicht so recht zusammengehen.
> 
> Beste Grüße
> 
> Volker
> 
> [1] http://www.pytables.org/
> [2] https://support.hdfgroup.org/products/java/hdfview/
> [3] http://home.gna.org/veusz/
> [4] Noch nicht released. Kann bei Interesse aber gerne das Teil "as is"
> mal auf github schieben.
> [5] Erste Prototypen.
> 
> -- 
> =========================================================
>   inqbus Scientific Computing    Dr.  Volker Jaenisch
>   Richard-Strauss-Straße 1       +49(08861) 690 474 0
>   86956 Schongau-West            http://www.inqbus.de
> =========================================================
> 
> _______________________________________________
> python-de maillist  -  python-de@python.org
> https://mail.python.org/mailman/listinfo/python-de
> 

--  
Achim Herwig <achim.herwig@wodca.de> 
80997 München, Germany, +49 176 802 393 58

Back to de.comp.lang.python | Previous | Next | Find similar


Thread

Re: [Python-de] Wie Key-Value Sets speichern? Achim Herwig <python@wodca.de> - 2016-09-29 08:24 +0200

csiph-web