Hallo meine lieben, Ich lese momentan aus meiner Heizung verschiedene Parameter aus und lass mir diese in einen langen CSV Log schreiben. Den log lese ich in einem Python Script wieder ein und stelle sie der Parameter Nummer nach zusammen. Ich würde mir gerne die etwa 200 Parameter darstellen lassen. Ich suche daher mal nach einer Möglichkeit wie ich die Daten in Python visualisieren kann. Ich fände es ganz nett, wenn ich aus einer Liste ein paar Signale zum gemeinsamen darstellen aus einer Liste oä auswählen kann. Ich kann mir nicht vorstellen, dass es da noch nichts Fertiges gibt. Ich glaube mir fehlt da einfach nur ein passendes Keyword. Mit Python habe ich schon einiges gedreht, nur mit GUI habe ich bisher noch nichts gemacht. Daher wäre eine fertige plot Anzeigelösung ganz nett. Als IDE setze ich PyCharm ein. Für eure Tipps schon mal viel Dank. Gruß, Markus
Ich mache das mit Jupyter und dann pandas und matplotlib.
Kolja L. schrieb: > Ich mache das mit Jupyter und dann pandas und matplotlib. ja, mit jupyter und pandas und matplotlib hab isch auch schon gearbeitet. Aber in der Tat könnte ich da mit Select multiple die Variablen entsprechend selektieren. Ist halt leider "so eine Browseranwendung" (-; https://ipywidgets.readthedocs.io/en/latest/examples/Widget%20List.html Ich warte mal ab was da sonst noch so kommt aber sonst mach ich es eben so
OK, dann viellicht noch ein usability Hinweis. Bei dem Programm WinSol der technischen Alternative können die einzelnen Graphen duch klicken auf die Legende ein / aus und fett geschaltet werden. Das finde ich sehr komfortabel :-) Viel Spaß mit deinen Daten, ich werde hier auf jeden Fall weiterlesen.
Markus H. schrieb: > Ich lese momentan aus meiner Heizung verschiedene Parameter aus und lass > mir diese in einen langen CSV Log schreiben. > > Den log lese ich in einem Python Script wieder ein und stelle sie der > Parameter Nummer nach zusammen. > > Ich würde mir gerne die etwa 200 Parameter darstellen lassen. Ich suche > daher mal nach einer Möglichkeit wie ich die Daten in Python > visualisieren kann. Ich fände es ganz nett, wenn ich aus einer Liste ein > paar Signale zum gemeinsamen darstellen aus einer Liste oä auswählen > kann. Wie schon erwähnt, gibt es für die Visualisierung die gute alte Matplotlib, auf die auch Pandas zurückgreift -- ebenso wie Seaborn, ggplot und Plot.ly. In neuerer Zeit erfreuen sich auch Bokeh, Holoviews und DataShader immer größerer Beliebtheit, die IIRC nicht auf Matplotlib basieren. Eine andere Methode könnte sein, das mit einem Webfrontend zu machen, etwa auf Basis von Flask. Zur Visualisierung dient eine der vielen verfügbaren Javascript-Bibliotheken wie D3.js, jqPlot, jqWidgets oder Flot zu nutzen. Dadurch werden die Plots dann auf Wunsch auch netzwerkweit verfügbar, und können auch mal auf einem Tablet oder Smartphone angeschaut werden. Ansonsten nutze ich selbst für solche Aufgaben immer häufiger Elasticsearch und Kibana. Elasticsearch ist zwar zunächst eine Volltext-Suchmaschine, hat aber auch einen starken Fokus auf der Datenanalyse, und mit dem zugehörigen Webfrontend Kibana auch auf die Exploration und Visualisierung der Daten -- und das alles interaktiv und mit vielen ausgefuchsten Möglichkeiten. Zwar erfordert diese Lösung einen gewissen Einarbeitungsaufwand, der sich aber sehr schnell lohnt, wenn man solche Werkzeuge häufiger benötigt.
Markus H. schrieb: > Kolja L. schrieb: >> Ich mache das mit Jupyter und dann pandas und matplotlib. > > ja, mit jupyter und pandas und matplotlib hab isch auch schon > gearbeitet. Aber in der Tat könnte ich da mit Select multiple die > Variablen entsprechend selektieren. Ist halt leider "so eine > Browseranwendung" (-; Nein, nicht wirklich. Jupyter (und auch iPython) sind zunächst einmal nur interaktive Python-Shells und können nicht nur im Browser oder der eigenen Qt-GUI, sondern unter anderem auch auf der Kommandozeile verwendet werden. Und natürlich kann man Code, den man darin geschrieben hat, speichern und dann in einem normalen Skript benutzen... ;-)
Kolja L. schrieb: > Bei dem Programm WinSol der technischen Alternative Das schaut genau nach soetwas aus, wie ich es möchte: http://img.archiexpo.de/images_ae/photo-mg/74467-9212475.jpg Ich weiß gerade nur nicht wie ich die Daten in das Programm rein klopfen kann (-; Sheeva P. schrieb: > Markus H. schrieb: >> - > > Wie schon erwähnt, gibt es für die Visualisierung die gute alte > Matplotlib, auf die auch Pandas zurückgreift -- ebenso wie Seaborn, > ggplot und Plot.ly. In neuerer Zeit erfreuen sich auch Bokeh, Holoviews > und DataShader immer größerer Beliebtheit, die IIRC nicht auf Matplotlib > basieren. Die "Nur plotting" libs benötigen leider noch einen erheblichen Programmieraufwand für das GUI. (Matplotlib, Seaborn, GGplot) Plot.ly ist mit 60$ zu teuer Bokeh hat auf ihere Galerie einige Beispiele in Kombination mit einigen GUI steuerelementen - das ginge wieder in die Richtung, dass ich mir eine einfache Oberfläche zusammen basteln kann: https://bokeh.pydata.org/en/latest/docs/gallery.html Ganz ähnlich mit dne GUI Controls bei Holoview: http://holoviews.org/gallery/demos/bokeh/scatter_economic.html > Eine andere Methode könnte sein, das mit einem Webfrontend zu machen, > etwa auf Basis von Flask. Zur Visualisierung dient eine der vielen > verfügbaren Javascript-Bibliotheken wie D3.js, jqPlot, jqWidgets oder > Flot zu nutzen. Dadurch werden die Plots dann auf Wunsch auch > netzwerkweit verfügbar, und können auch mal auf einem Tablet oder > Smartphone angeschaut werden. > > Ansonsten nutze ich selbst für solche Aufgaben immer häufiger > Elasticsearch und Kibana. Elasticsearch ist zwar zunächst eine > Volltext-Suchmaschine, hat aber auch einen starken Fokus auf der > Datenanalyse, und mit dem zugehörigen Webfrontend Kibana auch auf die > Exploration und Visualisierung der Daten -- und das alles interaktiv und > mit vielen ausgefuchsten Möglichkeiten. Zwar erfordert diese Lösung > einen gewissen Einarbeitungsaufwand, der sich aber sehr schnell lohnt, > wenn man solche Werkzeuge häufiger benötigt. Schaut beides auch sehr interessant aus, aber ich möchte eigentlich das Rad nicht neu erfinden Sheeva P. schrieb: > Markus H. schrieb: > > Nein, nicht wirklich. Jupyter (und auch iPython) sind zunächst einmal > nur interaktive Python-Shells und können nicht nur im Browser oder der > eigenen Qt-GUI, sondern unter anderem auch auf der Kommandozeile > verwendet werden. Und natürlich kann man Code, den man darin geschrieben > hat, speichern und dann in einem normalen Skript benutzen... ;-) Wenn dann müsste ich es wohl so mit einer Auswahlbox machen und mit irgendeiner plot lib darstellen hufnala schrieb: > Hi, schau dir mal orange an > > //hufnala Das sieht auch sehr interessant aus, aber habe darin habe ich intuitiv nicht gleich eine Lösung erzeugen können. Also wenn ich wüsste in welches Format ich meine Daten Prügeln muss wäre das Winsol mein Favorit, da die ganze Oberfläche schon erprobt ist. Ansonsten wird es wohl eine Auswahlbox mit irgendeinem plot dazu geben. Anbei wen es interessiert der aktuelle Stand meiner CSV (-: Ich hätte bei der Uhrzeit : statt _ verwenden sollen ich glaube deshalb erkennt orange es nicht als datetime Gruß, Markus
Markus H. schrieb: > Kolja L. schrieb: >> Bei dem Programm WinSol der technischen Alternative > > Das schaut genau nach soetwas aus, wie ich es möchte: > http://img.archiexpo.de/images_ae/photo-mg/74467-9212475.jpg > > Ich weiß gerade nur nicht wie ich die Daten in das Programm rein klopfen > kann (-; Das wäre natürlich auch noch eine Möglichkeit. Aber ich glaube nicht, das es sorum vorgesehen ist...
Markus H. schrieb: > Sheeva P. schrieb: > Die "Nur plotting" libs benötigen leider noch einen erheblichen > Programmieraufwand für das GUI. (Matplotlib, Seaborn, GGplot) Naja, "erheblich"... Eine kleine GUI ist mit Tkinter / Tix flott gemacht, wenngleich nicht übermäßig hübsch. Mit Qt ist der Aufwand zwar geringfügig höher, dafür ist das dann allerdings richtig schick. >> Ansonsten nutze ich selbst für solche Aufgaben immer häufiger >> Elasticsearch und Kibana. Elasticsearch ist zwar zunächst eine >> Volltext-Suchmaschine, hat aber auch einen starken Fokus auf der >> Datenanalyse, und mit dem zugehörigen Webfrontend Kibana auch auf die >> Exploration und Visualisierung der Daten -- und das alles interaktiv und >> mit vielen ausgefuchsten Möglichkeiten. Zwar erfordert diese Lösung >> einen gewissen Einarbeitungsaufwand, der sich aber sehr schnell lohnt, >> wenn man solche Werkzeuge häufiger benötigt. > > Schaut beides auch sehr interessant aus, aber ich möchte eigentlich das > Rad nicht neu erfinden Wie Du an dem Bild im Anhang sehen kannst, sind die Daten schnell in ein Elasticsearch geklöppelt und können dann sofort mit Kibana analysiert und visualisiert werden. Wer mag, kann die Daten auch live einspielen (wie das beispielsweise gerne für Logdateen gemacht wird) und hat dann (mit Auswahl eines entsprechenden Zeitfilters, siehe oben rechts) immer einen aktuellen View auf seine Daten. Das simple Import-Skript im Python3 habe ich auch mal angehängt. Die Frage ist nurmehr, was Deine "Data"- und "Parameter"-Felder tatsächlich aussagen, bzw. wie man sie in lesbare Daten wandeln kann. > Anbei wen es interessiert der aktuelle Stand meiner CSV (-: > Ich hätte bei der Uhrzeit : statt _ verwenden sollen ich glaube deshalb > erkennt orange es nicht als datetime Auch der '_' könnte stören. Nach meiner Erfahrung kommen die meisten Programme ganz gut mit dem Format ISO 8601 (sp?) aus, gerne auch mit Leerzeichen statt des 'T'. Python kann das mit dateutil.parser.parse() jedenfalls sofort verarbeiten, siehe die Funktion toDatetime() in dem anhängenden Skriptlein.
Sheeva P. schrieb: > Markus H. schrieb: >> Sheeva P. schrieb: >> Die "Nur plotting" libs benötigen leider noch einen erheblichen >> Programmieraufwand für das GUI. (Matplotlib, Seaborn, GGplot) > > Naja, "erheblich"... Eine kleine GUI ist mit Tkinter / Tix flott > gemacht, wenngleich nicht übermäßig hübsch. Mit Qt ist der Aufwand zwar > geringfügig höher, dafür ist das dann allerdings richtig schick. Ja klar, aber bis alles möglichst fehlerfei läuft vergeht einiges an Zeit >>> Ansonsten nutze ich selbst für solche Aufgaben immer häufiger >>> Elasticsearch und Kibana. Elasticsearch ist zwar zunächst eine >>> Volltext-Suchmaschine, hat aber auch einen starken Fokus auf der >>> Datenanalyse, und mit dem zugehörigen Webfrontend Kibana auch auf die >>> Exploration und Visualisierung der Daten -- und das alles interaktiv und >>> mit vielen ausgefuchsten Möglichkeiten. Zwar erfordert diese Lösung >>> einen gewissen Einarbeitungsaufwand, der sich aber sehr schnell lohnt, >>> wenn man solche Werkzeuge häufiger benötigt. >> >> Schaut beides auch sehr interessant aus, aber ich möchte eigentlich das >> Rad nicht neu erfinden > > Wie Du an dem Bild im Anhang sehen kannst, sind die Daten schnell in ein > Elasticsearch geklöppelt und können dann sofort mit Kibana analysiert > und visualisiert werden. Wer mag, kann die Daten auch live einspielen > (wie das beispielsweise gerne für Logdateen gemacht wird) und hat dann > (mit Auswahl eines entsprechenden Zeitfilters, siehe oben rechts) immer > einen aktuellen View auf seine Daten. Das simple Import-Skript im > Python3 habe ich auch mal angehängt. Die Frage ist nurmehr, was Deine > "Data"- und "Parameter"-Felder tatsächlich aussagen, bzw. wie man sie in > lesbare Daten wandeln kann. Es handelt sich um daten im Vaillant X6 Format: http://old.ethersex.de/index.php/Vaillant_X6_Schnittstelle Das Problem ist, dass die Schnittstelle nicht dokumentiert ist. Es gibt im endeffekt Digital, Analog und Analog+Status und irgendwelche längeren Bytes als Antwort. Ich muss mit Betrachtung der Daten herausfinden, was für einen Datentyp sie repräsentieren (bspw. kann 1 byte analogwert, digitalwert oder sensorstatus sein) Wenn ich im Kibana nachträglich noch einen Analyzer hinterherschalten kann wäre das optimal - muss ich mir mal anschauen. Und dann halt blots über von verschiedenen Parametern über die Zeit >> Anbei wen es interessiert der aktuelle Stand meiner CSV (-: >> Ich hätte bei der Uhrzeit : statt _ verwenden sollen ich glaube deshalb >> erkennt orange es nicht als datetime > > Auch der '_' könnte stören. Nach meiner Erfahrung kommen die meisten > Programme ganz gut mit dem Format ISO 8601 (sp?) aus, gerne auch mit > Leerzeichen statt des 'T'. Python kann das mit dateutil.parser.parse() > jedenfalls sofort verarbeiten, siehe die Funktion toDatetime() in dem > anhängenden Skriptlein. Der Verweis auf die ISO schaut gut aus - ich liebe Standards - dann muss man sich selber darüber keine Gedanken mehr machen
Markus H. schrieb: > Es handelt sich um daten im Vaillant X6 Format: > http://old.ethersex.de/index.php/Vaillant_X6_Schnittstelle > > Das Problem ist, dass die Schnittstelle nicht dokumentiert ist. Hmpf. ;-( > Es gibt im endeffekt Digital, Analog und Analog+Status und irgendwelche > längeren Bytes als Antwort. > Ich muss mit Betrachtung der Daten herausfinden, was für einen Datentyp > sie repräsentieren (bspw. kann 1 byte analogwert, digitalwert oder > sensorstatus sein) > > Wenn ich im Kibana nachträglich noch einen Analyzer hinterherschalten > kann wäre das optimal - muss ich mir mal anschauen. Man kann die Daten zunächst als einfachen Text betrachte und einen Analyzer in Elasticsearch einbauen. Das ist am Ende ja eine Volltext-Suchmaschine, die über solche Analyzer beispielsweise Phonetisches Matching über Beider-Morse, Soundex oder Double-Methaphone realisieren kann... Tatsächlich würde ich hier jedoch eher dazu neigen, die Analyse in Python zu machen und dann gleich Klartextdaten ins ES zu pumpen. Das ist vermutlich einfacher anpaß- und konfigurierbar... Um die Datenanalyse ein bisschen zu vereinfachen, habe ich den Importer noch ein bisschen angepaßt, so daß er die einzelnen Bytes aus "data" jetzt zusächlich noch unter "bytes.b0" bis "bytes.b<n>" importiert. Das könnte die Protokollanalyse etwas vereinfachen, weil sich so über die Suchzeile ("use lucene query syntax") oder die kleinen "Anfasser" an den Feldern in Kibana die Daten filtern lassen, so daß zum Beispiel nur die Nachrichten angezeigt werden, in denen "bytes.b0" einen der Werte "03" oder "04" hat (Suchsyntax: "bytes.b0:03 OR bytes.b0:04").
Orange kann auch python scripte, datumsformat definieren und dann als dataframe weitergeben sollte gehen Beispiel habe ich leider keines, und mit der Schnittstelle habe ich mich noch nicht beschäftigt :-( Gibt auch noch was von der Uni Konstanz, hab aber den namen vergessen, und fand es eher umständlich g**gle und data analytics Konstanz sollte helfen. Zu Elastic/Kibana bin ich noch auf der Suche nach einem einfachen tutorial was aufzusetzen - basis csv, hat da jemand einen Tipp? //hufnala
Sorry, bin heute nach der Arbeit zu nichts mehr gekommen. anbei mal mein aktueller stand des importskripts. Also am Importieren wird es bei mir nicht scheitern (-; Nur so - ich lebe noch und das Thema ist für mich immer noch aktuell
hufnala schrieb: > Zu Elastic/Kibana bin ich noch auf der Suche nach einem einfachen > tutorial was aufzusetzen - basis csv, hat da jemand einen Tipp? Das Aufsetzen der beiden ist ziemlich einfach: Zip-Archive oder Tarballs herunterladen, entpacken, und das zum verwendeten Betriebssystem passende Startskript im bin/-Unterverzeichnis aufrufen. Java sollte dazu natürlich installiert sein... ;-) Die Dateien im config/-Unterverzeichnis sollte man zumindest einmal gesehen haben. Ansonsten gibt es in der Dokumentation der beiden Programme auf der Webseite von Elastic.co jeweils einen Abschnitt "Getting started", der sicher eine Lektüre wert ist. Das Installieren und Starten der beiden Programme ist insofern ziemlich simpel. Etwas schwieriger ist es, die vielen Möglichkeiten und die sehr leistungsfähige JSON-Querysyntax von ES zu lernen. Dazu empfehle ich das Buch "Elasticsearch - The Definitive Guide", das es bei Elastic.co online oder auch als gedruckte Version bei O'Reilly gibt. Was die "Basis CSV" angeht: Elasticsearch arbeitet auf Basis von JSON. Das läßt sich allerdings in den meisten Programmiersprachen einfach aus CSVs erzeugen, für Python siehe in meinem zweiten Skript die Zeilen 54 bis 58.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.