[PYTHON] Visualisez de manière interactive les données avec Treasure Data, Pandas et Jupyter.

introduction

TreasureData est un service cloud qui vous permet de collecter, stocker et analyser facilement des données chronologiques telles que les journaux d'applications et les données de capteurs. Actuellement, Presto est disponible comme l'un des moteurs d'analyse, et les données collectées peuvent être analysées de manière interactive avec SQL. devenu.

Cependant, TreasureData n'a pas la fonction de visualisation basée sur les données analysées par SQL, il est donc nécessaire d'effectuer la visualisation à l'aide d'un outil externe tel qu'Excel ou Tableau.

Donc cette fois, nous avons Pandas, qui est une bibliothèque Python populaire, et Jupyter, qui vous permet d'exécuter Python de manière interactive avec un navigateur Web. En utilisant, nous exécuterons SQL de manière interactive avec TreasureData pour l'agrégation et la visualisation.

Abstract

installer

Environnement d'utilisation

TreasureData

S'inscrire

Inscrivez-vous à partir de la page ici. Actuellement, il existe une période d'essai de 14 jours pendant laquelle vous pouvez utiliser Presto.

Pandas

Pandas est un outil qui ressemble à ce qui suit, lorsqu'il est cité par le fonctionnaire.

pandas is an open source, BSD-licensed library providing high-performance, easy-to-use data structures and data analysis tools for the Python programming language.

Installation de Python

Ubuntu14.04 inclut Python3.4, mais python3 est un alias et il est gênant, nous allons donc créer l'environnement avec pyenv.

Référence: http://qiita.com/akito1986/items/be5dcd1a502aaf22010b


$ sudo apt-get install git gcc g++ make openssl libssl-dev libbz2-dev libreadline-dev libsqlite3-dev

$ cd /usr/local/
$ sudo git clone git://github.com/yyuu/pyenv.git ./pyenv
$ sudo mkdir -p ./pyenv/versions ./pyenv/shims

$ echo 'export PYENV_ROOT="/usr/local/pyenv"' | sudo tee -a /etc/profile.d/pyenv.sh
$ echo 'export PATH="${PYENV_ROOT}/shims:${PYENV_ROOT}/bin:${PATH}"' | sudo tee -a /etc/profile.d/pyenv.sh
$ source /etc/profile.d/pyenv.sh

$ pyenv -v
pyenv 20150601-1-g4198280

$ sudo visudo
#Defaults       secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Defaults    env_keep += "PATH"
Defaults    env_keep += "PYENV_ROOT"

$ sudo pyenv install -v 3.4.3
$ sudo pyenv global 3.4.3
$ sudo pyenv rehash

Installer Pandas

$ sudo pip install --upgrade pip
$ sudo pip install pandas

Essayez d'utiliser Pandas depuis le shell

Veuillez vous reporter à 10 minutes aux pandas.

Jupyter

Jupyter était à l'origine un shell interactif d'un navigateur Web pour Python appelé IPython, mais il est maintenant renommé et développé dans le but de le rendre disponible dans n'importe quel langage. De plus, JupyerHub est une version serveur de Jupyter qui permet à plusieurs utilisateurs d'utiliser Jupyter, ce qui facilite le partage des blocs-notes créés avec Juypter.

Installez Jupyter Hub

$ sudo apt-get install npm nodejs-legacy
$ sudo npm install -g configurable-http-proxy
#Bibliothèques associées
$ sudo pip install zmq jsonschema

#Bibliothèque de visualisation
$ sudo apt-get build-dep python-matplotlib
$ sudo pip install matplotlib

$ git clone https://github.com/jupyter/jupyterhub.git
$ cd jupyterhub
$ sudo pip install -r requirements.txt
$ sudo pip install .

$ sudo passwd ubuntu

$ jupyterhub

Vous pouvez maintenant ouvrir et accéder à Jupter depuis votre navigateur Web. http://(IP address):8000/

LoginPage

Pour d'autres paramètres détaillés de JupyterHub, reportez-vous à here.

Utilisez les pandas de Jupyter

Tout d'abord, essayez de vous connecter. Ensuite, le répertoire des utilisateurs de l'utilisateur connecté s'affiche. Ici, créez un répertoire de travail pour Jupyter et créez un bloc-notes pour enregistrer votre travail.

TopPage

Sélectionnez Nouveau-> Notebooks (Python3).

NewNotebook

Vous pouvez enregistrer une séquence de commandes Python dans ce bloc-notes.

Maintenant, testons en nous basant sur here.

%matplotlib inline
 
import os
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000))

ts = ts.cumsum()

ts.plot()

sample

ToDo: Il semble que la première importation puisse être omise avec la configuration suivante, mais cela n'a pas encore été bien fait, donc je vérifie ...


$ jupyterhub --generate-config
Writing default config to: jupyterhub_config.py

$ vi jupyterhub_config.py
c.IPKernelApp.matplotlib = 'inline'
c.InteractiveShellApp.exec_lines = [
    'import pandas as pd',
    'import numpy as np',
    'import matplotlib.pyplot as plt',
]

$ mv jupyterhub_config.py .ipython/profile_default/

Intégration de Treasure Data et Pandas à l'aide de pandas-td

Maintenant que vous devriez pouvoir utiliser Pandas et Jupyter, j'aimerais accéder à Treasure Data.

Ici, nous utiliserons une bibliothèque appelée pandas-td. En utilisant cela, vous pourrez faire trois choses.

  1. Mettez les données dans le tableau de TreasureData
  2. Extraire les données de la table TreasureData
  3. Interrogez avec TreasureData pour obtenir des résultats

Installation

$ sudo pip install pandas-td

Paramètres de connexion

%matplotlib inline
 
import os
import pandas as pd
import pandas_td as td

#C'est pratique si vous le mettez dans la variable d'environnement
#con = td.connect(apikey="os.environ['TD_API_KEY']", endpoint='https://api.treasuredata.com/')
con = td.connect(apikey="TD API KEY", endpoint='https://api.treasuredata.com/')

Émettre une requête

engine = con.query_engine(database='sample_datasets', type='presto')
# Read Treasure Data query into a DataFrame.
df = td.read_td('select * from www_access', engine)
df

query

Jetez un œil à certaines des données

engine = con.query_engine(database='sample_datasets', type='presto')
con.tables('sample_datasets')
td.read_td_table('nasdaq', engine, limit=3, index_col='time', parse_dates={'time': 's'})

limit

Obtenez en réduisant la période, agrégez par date et visualisez

df = td.read_td_table('nasdaq', engine, limit=None, time_range=('2010-01-01', '2010-02-01'), index_col='time', parse_dates={'time': 's'})
df.groupby(level=0).volume.sum().plot()

graph

Ce qui est pratique

Vous pouvez facilement réécrire le traitement intermédiaire et réessayer. S'il est d'environ plusieurs millions, il peut être traité sur la mémoire en fonction du résultat téléchargé. Vous pouvez également importer des données à partir de fichiers MySQL et CSV.

etc.

en conclusion

Je ne peux pas nier le sentiment d'épuisement en cours de route, alors j'écrirai bientôt plus correctement.

Recommended Posts

Visualisez de manière interactive les données avec Treasure Data, Pandas et Jupyter.
Visualisez rapidement avec les pandas
installation de jupyter et pandas
Afficher de manière interactive des courbes algébriques en Python, Jupyter
Implémentez "Data Visualization Design # 3" avec pandas et matplotlib
Visualisation des données avec les pandas
Manipulation des données avec les Pandas!
Mélangez les données avec les pandas
Incorporer des données audio avec Jupyter
Conseils de traitement des données avec Pandas
Visualisez l'arbre de décision avec le notebook Jupyter
Traçage de données polyvalent avec pandas + matplotlib
Analyse pratique avec Pandas + notebook Jupyter
Construction de pipeline de données avec Python et Luigi
La barre de données EXCEL et l'échelle de couleurs peuvent également être faites avec des pandas
Jupyter avec PYNQ et synthèse de haut niveau avec Polyphony
Essayez de convertir en données ordonnées avec les pandas
Essayez rapidement de visualiser votre ensemble de données avec des pandas
Lier Python et JavaScript avec le notebook Jupyter
Joindre les données avec la clé principale (obligatoire) et la sous-clé (facultative) dans les pandas Python
Chargez CSV avec des pandas et jouez avec Index
Gérez les structures de données 3D avec les pandas
Lisez CSV et analysez avec Pandas et Seaborn
Exemple de traitement efficace des données avec PANDAS
Meilleures pratiques pour manipuler les données avec les pandas
Visualisons la relation entre le salaire moyen et l'industrie avec des données XBRL et seaborn! (7/10)
Visualisez les données d'itinéraires ferroviaires et résolvez les problèmes d'itinéraires les plus courts (Python + Pandas + NetworkX)
[Python] Visualisez et identifiez les pièces lentes avec pytest
Visualisez les données d'infection corona à Tokyo avec matplotlib
Analyse des données pour améliorer POG 2 ~ Analyse avec le notebook jupyter ~
Essayez d'agréger les données de musique doujin avec des pandas
Générer et publier des données d'image factice avec Django
Visualisez les données de la carte Yugioh avec Python --Yugiou Data Science 1. EDA Edition
Installez pip et pandas avec Ubuntu ou VScode
Folium: Visualisez les données sur une carte avec Python
Transformez les données de vacances en une trame de données avec les pandas
lecture de données pandas
Analyse des données financières par pandas et leur visualisation (2)
Apprentissage des données relationnelles avec numpy et NetworkX (clustering spectral)
Comment convertir des données détenues horizontalement en données détenues verticalement avec des pandas
Soyez prudent lors de la lecture de données avec des pandas (spécifiez dtype)
Essayez le fonctionnement de la base de données avec Python et visualisez avec d3
Visualisez les données d'itinéraires ferroviaires sous forme de graphique avec Cytoscape 2
Visualisez la gamme d'insertions internes et externes avec python
Analyser et visualiser JSON (application Web ⑤ avec Python + Flask)
Construction d'un environnement d'analyse de données avec Python (notebook IPython + Pandas)
Vue d'ensemble et astuces de Seaborn avec visualisation de données statistiques
Mesurez la température et l'humidité avec Raspberry Pi3 et visualisez avec Ambient
Comment extraire des valeurs Null et des valeurs non Null avec des pandas
Comment extraire des données qui ne manquent pas de valeur nan avec des pandas
Crypter et enregistrer les données sur jupyter et décrypter si nécessaire
[Tutoriel PyTorch ⑦] Visualisation des modèles, des données et de la formation avec Tensorboard
Obtenez des commentaires et des abonnés avec l'API de données YouTube
Challenge classification des images par TensorFlow2 + Keras 3 ~ Visualiser les données MNIST ~
Visualisez les mots-clés dans les documents avec TF-IDF et Word Cloud
Traiter les données csv avec python (traitement du comptage à l'aide de pandas)
Étudiez l'échange de données Java et Python avec Apache Arrow
Extraire la valeur maximale avec les pandas et modifier cette valeur