Path: csiph.com!fu-berlin.de!uni-berlin.de!not-for-mail From: Achim Herwig Newsgroups: de.comp.lang.python Subject: Re: [Python-de] Wie Key-Value Sets speichern? Date: Thu, 29 Sep 2016 08:24:38 +0200 Lines: 139 Message-ID: References: <5451e46e-5eca-e89d-61ef-2030e6aee36e@xgm.de> <95c64ce4-f337-280c-f339-01a2b58cfd36@inqbus.de> <68511A44-149A-47C1-9AC8-7F7A4F259FE3@wodca.de> Mime-Version: 1.0 (Mac OS X Mail 9.3 \(3124\)) Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable X-Trace: news.uni-berlin.de /23JFTarPk9cEUx0d84rig6HMxLqonzlJDUaCi6HaDBw== Return-Path: X-Original-To: python-de@python.org Delivered-To: python-de@mail.python.org In-Reply-To: <95c64ce4-f337-280c-f339-01a2b58cfd36@inqbus.de> X-Mailer: Apple Mail (2.3124) X-BeenThere: python-de@python.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Die Deutsche Python Mailingliste List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Mailman-Original-Message-ID: <68511A44-149A-47C1-9AC8-7F7A4F259FE3@wodca.de> X-Mailman-Original-References: <5451e46e-5eca-e89d-61ef-2030e6aee36e@xgm.de> <95c64ce4-f337-280c-f339-01a2b58cfd36@inqbus.de> Xref: csiph.com de.comp.lang.python:4553 Hallo, wenn die Daten unterschiedlich sind, kann es auch sinnvoll sein, SQLite = als Persistenz-Format einzusetzen. Dann kannst Du Dir bequem f=FCr jeden = Record-Typen eine eigene Tabelle schreiben und sp=E4ter beim Einlesen = die Daten selektieren. VG, Achim. > Am 28.09.2016 um 22:58 schrieb Dr. Volker Jaenisch = : >=20 > Servus Florian! >=20 > Am 28.09.2016 um 00:09 schrieb Florian Lindner: >> Dabei will ich folgendes: >>=20 >> - Die Datei soll menschen-lesbar sein >>=20 >> - Eingelesen werden soll es mit Python um dann z.B. mit numpy = weiterverarbeitet werden. >>=20 >> Wie w=FCrde nun ein geeignetes Datenformat ausschauen, was ich dann = auch problemlos mit Python einlesen kann? > Ich frage mich, was Du mit dem Ganzen eigentlich bezweckst. >=20 > 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=FCche 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=FCr 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 =FCberpr=FCfen ist. >=20 > Dein Daten sind irregul=E4r, 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=E4ngen, um sie sp=E4ter f=FCr die Verarbeitung in Numpy = wieder > auseinander zu pfriemeln. >=20 > Wenn Du an Deiner "Alles in einen File"-Strategie festh=E4lt, wirst = Du > beim Einlesen sowieso eine Art von Dispatching machen m=FCssen um die > (sofern ich verstanden habe homogenen) Daten der einzelnen Runs wieder > aus Deinem File zu extrahieren. >=20 > Wir verarbeiten f=FCr einen gro=DFen 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 =D6ldruck, des Motors ein Flie=DFkomma-Wert. = Alle > diese Daten kommen als ein gro=DFer Datenstrom an. Das Problem ist = also > dem Deinigen evtl. =E4hnlich gelagert. Jede da drau=DFen mit CAN-Daten > besch=E4ftigte Firma baut sich, wie Du es auch vor hast, ein eigenes > Datenformat, um mit den Daten umzugehen. >=20 > 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=FCr den "Blinker hinten rechts" und eine andere Tabelle = f=FCr > die Motordaten. Jede dieser HDF5-Tabellen hat dabei eine andere > Struktur. HDF5 ist ein sehr flexibles selbst dokumentierendes, > standardisiertes, komprimiertes, bin=E4res, plattformunabh=E4giges > 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=F6nnen. Noch dazu kann mit mehr als > C-Geschwindigkeit in gigantisch gro=DFen Datenbest=E4nden (gr=F6=DFer = als der > verf=FCgbare RAM) aus Python heraus gesucht und gefiltert werden. >=20 > HDF5 ist erstmal nicht menschenlesbar - was meiner Meinung nach auch = in > den seltensten F=E4llen n=F6tig oder w=FCnschenswert ist. Aber es gibt = mit > hdf5dump und hdfview [2] plattformunabh=E4ngige 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=F6=DFeren Charting-Programme > Import-Filter f=FCr HDF5 anbieten. Ich habe mit Aesir [4] einen > QT-Python-HDF5-Viewer programmiert der deutlich schneller als HDFView > ist. Auch haben wir Datenklassen f=FCr Plone programmiert, um direkt = im > Browser durch HDF5-Files zu navigieren und deren Tabellen als > Web-Tabellen und Charts darzustellen zu k=F6nnen [5]. Das ist der = gro=DFe > Vorteil eines gut dokumentierten und standardisierten Datenformats, es > ist eine gute Basis um selber darum ein =D6kosystem zu entwickeln. >=20 > Ich hoffe Du erz=E4hlst uns ein bisschen mehr =FCber Dein Projekt, = dann > k=F6nnen wir Dir sicher bessere Ratschl=E4ge geben als JSON, YAML, = welche > beide mit Numpy nicht so recht zusammengehen. >=20 > Beste Gr=FC=DFe >=20 > Volker >=20 > [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. >=20 > --=20 > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D > inqbus Scientific Computing Dr. Volker Jaenisch > Richard-Strauss-Stra=DFe 1 +49(08861) 690 474 0 > 86956 Schongau-West http://www.inqbus.de > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D >=20 > _______________________________________________ > python-de maillist - python-de@python.org > https://mail.python.org/mailman/listinfo/python-de >=20 -- =20 Achim Herwig =20 80997 M=FCnchen, Germany, +49 176 802 393 58