Gérer les données ambiantes en Python

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.

Ambient structure

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".

Installation de la bibliothèque Ambient Python

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".

Charger la bibliothèque

A partir de là, je tourne sur un notebook jupyter. Chargez la bibliothèque comme suit.

import

Lecture des données depuis Ambient

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.

instance

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).

read

Convertir en pandas DataFrame

Chargez les modules dont vous aurez besoin à l'avenir.

pandas

Ensuite, convertissez ces données en un DataFrame pandas. C'est vraiment simple, procédez comme suit:

dataframe

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.

type created

convert

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.

Représenter graphiquement les données avec matplotlib

Ensuite, représentons graphiquement les données avec matplotlib.

matplotlib

Tout d'abord, faisons un graphique en ligne brisée de la température lue le 3 mars.

temp graph

Ensuite, représentons la corrélation entre la température et l'humidité.

scatter

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.

two axes

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.

rolling

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.

scattermatrix

Résumé

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

Gérer les données ambiantes en Python
Gérez les données au format NetCDF avec Python
Gérer le démarquage avec python
Afficher les données UTM-30LX en Python
Gérer les variables d'environnement en Python
Gérer les nombres complexes en Python
Obtenez des données LeapMotion en Python.
Lire les données des tampons de protocole avec Python3
Obtenir des données de Quandl en Python
Gérer les files d'attente de messages posix en python
Gérez le format GDS II avec Python
Hashing de données en R et Python
Comment gérer le japonais avec Python
Gérez plusieurs versions de python en un seul jupyter
Obtenez des données supplémentaires vers LDAP avec python
Quadtree en Python --2
CURL en Python
Métaprogrammation avec Python
Python 3.3 avec Anaconda
Géocodage en python
SendKeys en Python
Entrée / sortie de données en Python (CSV, JSON)
Méta-analyse en Python
Livre Ali en python: Sec.2-4, structure de données
Unittest en Python
Essayez de travailler avec des données binaires en Python
Analyse de données python
Époque en Python
Discord en Python
Obtenez les données de l'API Google Fit en Python
Allemand en Python
DCI en Python
tri rapide en python
nCr en python
N-Gram en Python
Programmation avec Python
Python: prétraitement en machine learning: acquisition de données
Obtenez des données Youtube en Python à l'aide de l'API Youtube Data
Plink en Python
Constante en Python
Représentez facilement des données graphiques dans le shell et Python
FizzBuzz en Python
Sqlite en Python
Étape AIC en Python
LINE-Bot [0] en Python
CSV en Python
Assemblage inversé avec Python
Réflexion en Python
Python: prétraitement dans l'apprentissage automatique: conversion de données
Constante en Python
nCr en Python.
format en python
Scons en Python 3
Puyopuyo en python
python dans virtualenv
PPAP en Python
Quad-tree en Python
Réflexion en Python