Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.lang.python > #4553
| 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> |
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
Re: [Python-de] Wie Key-Value Sets speichern? Achim Herwig <python@wodca.de> - 2016-09-29 08:24 +0200
csiph-web