Nous présenterons un exemple de lecture des données du service de visualisation de données de capteurs "Ambient" en Python, en les convertissant en DataFrame de pandas, et en les graphiques. Les données traitées à titre d'exemple sont les données telles que la température, l'humidité et la pression mesurées par ESP8266 Arduino, et il s'agit de "Veranda Environmental Monitor @ Setagaya Sakuragaoka" en Ambient. ) Est publié sous la forme.
L'environnement dans lequel Python a été exécuté
Ambient
Ambient est un service de visualisation de données IoT qui reçoit, stocke et visualise (graphiquement) les données de capteur envoyées à partir de micro-ordinateurs. Vous pouvez facilement envoyer des données de capteur d'Arduino, mbed, Raspberry Pi, etc. vers Ambient et les représenter graphiquement.
Pour plus d'informations sur l'utilisation d'Ambient, consultez "Essayer d'utiliser Ambient". Pour le moniteur d'environnement pris à titre d'exemple, voir "Créer un moniteur d'environnement domestique avec ESPr Developer + Ambient".
La bibliothèque Python d'Ambient a la capacité d'envoyer des données à Ambient et la capacité de lire les données stockées dans Ambient.
Vous pouvez installer la bibliothèque depuis Github comme suit.
$ pip install git+https://github.com/TakehikoShimojima/ambient-python-lib.git
Pour plus de détails sur la bibliothèque, voir "Python Library".
A partir de là, je tourne sur un notebook jupyter. Chargez la bibliothèque comme suit.
Tout d'abord, spécifiez l'ID de canal, la clé d'écriture et la clé de lecture pour créer une instance de Ambient. Si vous souhaitez uniquement lire, vous pouvez spécifier "Clé d'écriture". Dans le cas d'un canal public, la clé de lecture peut être omise. Les données traitées à titre d'exemple cette fois-ci sont publiées sous le nom "Veranda Environment Monitor @ Setagaya Sakuraoka". , L'ID de canal est 102, vous pouvez donc créer une instance comme ci-dessous.
Il existe deux façons de lire les données: spécifiez le nombre d'éléments de données, spécifiez la date et spécifiez la période.
Les deux méthodes renvoient un tableau au format dictionnaire (format JSON) qui ressemble à ceci:
[
{'created': '2017-02-25T15:01:48.000Z', 'd1':Valeur numérique, 'd2':Valeur numérique, 'd3':Valeur numérique},
{'created': '2017-02-25T15:06:47.000Z', 'd1':Valeur numérique, 'd2':Valeur numérique, 'd3':Valeur numérique},
...
]
L’heure de génération de données «créée» s’affiche en temps universel (UTC). Les données sont classées par ordre croissant de temps de génération (du plus ancien au plus récent).
Chargez les modules dont vous aurez besoin à l'avenir.
Ensuite, convertissez ces données en un DataFrame pandas. C'est vraiment simple, procédez comme suit:
L'heure de génération des données df ['created'] est la chaîne de caractères. Si cela reste tel quel, le traitement ultérieur sera gênant, alors convertissez-le en horodatage pandas.
La chaîne de caractères est convertie en Datetime avec strptime () et le Japon ('Asia / Tokyo') est défini comme fuseau horaire.
Puisque read_csv de pandas a une fonction pour analyser l'heure au format chaîne et la convertir en horodatage, je pense qu'il existe une fonction similaire lors de la création d'un DataFrame à partir d'un tableau au format dictionnaire, mais je ne l'ai pas trouvé. , Je l'ai converti moi-même comme ci-dessus. Si quelqu'un connaît un moyen plus simple de le faire, faites-le moi savoir.
Ensuite, représentons graphiquement les données avec matplotlib.
Tout d'abord, faisons un graphique en ligne brisée de la température lue le 3 mars.
Ensuite, représentons la corrélation entre la température et l'humidité.
Représentons graphiquement les changements de température et d'humidité quotidiennes avec la température sur l'axe gauche et l'humidité sur l'axe droit.
Jusqu'à présent, vous pouvez créer un graphique avec la fonction Ambient, mais avec Python + pandas + matplotlib, vous pouvez créer un graphique de manière plus flexible.
Calculons et représentons la même moyenne mobile de température et d'humidité que ci-dessus. Vous pouvez calculer la moyenne mobile de largeur 7 en utilisant df ['d1']. Rolling (window = 7, min_period = 1) .mean () au lieu de df ['d1'] comme données.
Créons une matrice de diagramme de dispersion de la température, de l'humidité, de la pression, de la tension d'alimentation et de l'éclairement.
En combinant Ambient avec Python, pandas et matplotlib, les données de capteur contrôlées par un micro-ordinateur peuvent être accumulées, une simple visualisation (graphique) peut être effectuée avec Ambient, et une analyse et une visualisation plus flexibles peuvent être effectuées avec Python. J'espère que cela sera utile lors de l'analyse des données réelles des capteurs avec Python.
Recommended Posts