Wir werden ein Beispiel für das Lesen der Daten des Sensordaten-Visualisierungsdienstes "Ambient" in Python vorstellen, sie in einen DataFrame von Pandas konvertieren und grafisch darstellen. Bei den als Beispiel behandelten Daten handelt es sich um Daten wie Temperatur, Luftfeuchtigkeit und Druck, die von ESP8266 Arduino und "Veranda Environmental Monitor @ Setagaya Sakuragaoka" gemessen wurden. ) Wird veröffentlicht als.
Die Umgebung, in der Python ausgeführt wurde
Ambient
Ambient ist ein IoT-Datenvisualisierungsdienst, der von Mikrocomputern gesendete Sensordaten empfängt, speichert und visualisiert (grafisch darstellt). Sie können problemlos Sensordaten von Arduino, mbed, Raspberry Pi usw. an Ambient senden und grafisch darstellen.
Informationen zur Verwendung von Ambient finden Sie unter "Versuch, Ambient zu verwenden". Ein Beispiel für den Umgebungsmonitor finden Sie unter "Erstellen eines Heimumgebungsmonitors mit ESPr Developer + Ambient".
Die Python-Bibliothek von Ambient bietet die Möglichkeit, Daten an Ambient zu senden und die in Ambient gespeicherten Daten zu lesen.
Sie können die Bibliothek von Github wie folgt installieren.
$ pip install git+https://github.com/TakehikoShimojima/ambient-python-lib.git
Einzelheiten zur Bibliothek finden Sie unter "Python-Bibliothek".
Von hier an laufe ich auf einem Jupyter-Notebook. Laden Sie die Bibliothek wie folgt.
Geben Sie zunächst die Kanal-ID, den Schreibschlüssel und den Leseschlüssel an, um eine Instanz von Ambient zu erstellen. Wenn Sie nur lesen möchten, können Sie "Schreibschlüssel" angeben. Bei öffentlichen Kanälen kann der Leseschlüssel weggelassen werden. Die diesmal als Beispiel behandelten Daten werden als "Veranda Environment Monitor @ Setagaya Sakuraoka" veröffentlicht. Die Kanal-ID lautet 102, sodass Sie eine Instanz wie folgt erstellen können.
Es gibt zwei Möglichkeiten, Daten zu lesen: Geben Sie die Anzahl der Datenelemente, das Datum und den Zeitraum an.
Beide Methoden geben ein Array im Wörterbuchformat (JSON-Format) zurück, das folgendermaßen aussieht:
[
{'created': '2017-02-25T15:01:48.000Z', 'd1':Numerischer Wert, 'd2':Numerischer Wert, 'd3':Numerischer Wert},
{'created': '2017-02-25T15:06:47.000Z', 'd1':Numerischer Wert, 'd2':Numerischer Wert, 'd3':Numerischer Wert},
...
]
Die Datenerstellungszeit "erstellt" wird in Agreement World Time (UTC) angezeigt. Die Daten sind in aufsteigender Reihenfolge der Generierungszeit (älteste bis neueste) angeordnet.
Laden Sie die Module, die Sie in Zukunft benötigen werden.
Konvertieren Sie diese Daten dann in einen Pandas DataFrame. Es ist wirklich einfach, machen Sie einfach Folgendes:
Die Datengenerierungszeit df ['created'] ist die Zeichenfolge. Wenn dies unverändert bleibt, ist die nachfolgende Verarbeitung unpraktisch. Konvertieren Sie dies in einen Pandas-Zeitstempel.
Die Zeichenfolge wird mit strptime () in Datetime konvertiert, und Japan ('Asia / Tokyo') wird als Zeitzone festgelegt.
Da read_csv von pandas eine Funktion hat, um die Zeit im Zeichenfolgenformat zu analysieren und in den Zeitstempel zu konvertieren, gibt es meiner Meinung nach eine ähnliche Funktion beim Erstellen eines DataFrame aus einem Array im Wörterbuchformat, aber ich konnte sie nicht finden. Ich habe es selbst wie oben konvertiert. Wenn jemand einen einfacheren Weg kennt, lassen Sie es mich bitte wissen.
Als nächstes zeichnen wir die Daten mit matplotlib grafisch auf.
Lassen Sie uns zunächst am 3. März ein gestricheltes Diagramm der Lesetemperatur erstellen.
Lassen Sie uns als nächstes die Korrelation zwischen Temperatur und Luftfeuchtigkeit grafisch darstellen.
Lassen Sie uns die Änderungen der täglichen Temperatur und Luftfeuchtigkeit mit der Temperatur auf der linken Achse und der Luftfeuchtigkeit auf der rechten Achse grafisch darstellen.
Bis zu diesem Punkt können Sie mit der Umgebungsfunktion grafisch darstellen, aber mit Python + Pandas + Matplotlib können Sie flexibler grafisch darstellen.
Lassen Sie uns den gleichen gleitenden Durchschnitt von Temperatur und Luftfeuchtigkeit wie oben berechnen und grafisch darstellen. Sie können den gleitenden Durchschnitt der Breite 7 berechnen, indem Sie df ['d1']. Rolling (Fenster = 7, min_period = 1) .mean () anstelle von df ['d1'] als Daten verwenden.
Erstellen wir eine Streudiagrammmatrix aus Temperatur, Luftfeuchtigkeit, Druck, Versorgungsspannung und Beleuchtungsstärke.
Durch die Kombination von Ambient mit Python, Pandas und Matplotlib können von einem Mikrocomputer gesteuerte Sensordaten akkumuliert, mit Ambient eine einfache Visualisierung (grafische Darstellung) und mit Python eine flexiblere Analyse und Visualisierung durchgeführt werden. Ich hoffe, es ist hilfreich bei der Analyse der tatsächlichen Sensordaten mit Python.
Recommended Posts