【GCP入門編・第13回】 Cloud Datalab でデータの可視化を行ってみよう!
投稿日:2018/02/07
データの解析を行った後に、可視化して全体を把握したいといった時や、ヒストグラムや箱ひげ図を描きたい、そんな時に皆様はどのようなツールを使っているでしょうか? Microsoft Excel, JMP, Tableau といったソフトウェアを使って可視化する方は多いのではないかと思います。また、普段 Python をお使いの方であれば、 matplotlib や seaborn を使っているのではないでしょうか。
Google Cloud Platform (GCP) では、 Cloud Datalab という可視化ツールが提供されています。データ分析、可視化のためのツールとして人気のある Jupyter Notebook をベースとして作られており、 BigQuery や Cloud Storage といったサービス上にあるデータを手軽に取得し、可視化することができます。
Jupyter Notebook と同様に、データ解析に用いられる numpy 、 pandas や、可視化に用いられる seaborn 、 matplotlib といった人気のあるライブラリはデフォルトで利用可能となっていますので、別途パッケージをインストールすることなく GCP 上のデータを解析、可視化することが可能です。
この記事では、 Cloud Datalab の概要を説明し、実際に Cloud Datalab を使って BigQuery 上のデータを可視化してみます。
この記事の目的
- Cloud Datalab の概要を理解しよう。
- Cloud Datalab を使って BigQuery 上のデータを可視化してみよう。
Cloud Datalab とは
Cloud Datalab は GCP のサービスの一部として提供されているデータ解析、可視化ツールです。ユーザーは Cloud Datalab の動作する Docker イメージをローカル、もしくは Google Compute Engine 上で動作させ、 Google BigQuery や Google Cloud Storage 上のデータを解析することが可能です。
Cloud Datalab のベースである Jupyter Notebook は、動作するコードを埋め込んだドキュメントを作成するために使われるソフトウェアです。このため、解析結果を出力するために書いたコードや、その説明と共にデータの解析結果を共有することが可能です。 Cloud Datalab でも、作成した notebook は Jupyter の notebook 形式でダウンロードできますので、プロジェクト内で可視化のコードを共有することも、簡単に行うことができます。これは解析用コードの再利用や、多人数でデータの解析を行う際に力を発揮します。
Cloud Datalab は Docker イメージとして配布されているため、特に設定を行わなくても動かすことが可能です。コンテナイメージを取得すれば気軽にデータ解析環境が手に入るので、いちいちスクリプトを書くよりも効率的ですし、スクリプトがなくなってしまったので再度書く、といったデータ解析にありがちな問題を回避することもできます。
これまで書き捨てのスクリプトを使ってデータの解析を行っていた、データをダウンロードして Excel で可視化を行っていた、そんな経験がある方は、この機会に Cloud Datalab を使ってデータの可視化と共有をはじめてみてはいかがでしょうか。
Cloud Datalab を使ってデータの可視化を行う
それでは、早速 Cloud Datalab を使ってデータの可視化を行ってみましょう。このデモでは、 Google Cloud Shell を使って Cloud Datalab を起動し、 BigQuery 上にあるサンプルデータを可視化してみます。
まずは、ブラウザで GCP のコンソールを開き、画面上部にある Google Cloud Shell のアイコンをクリックします。
Google Cloud Shell が起動したら、以下のコマンドを実行し、 Cloud Datalab の VM を作成します。 test-datalab
は VM のインスタンス名です。
$ datalab create test-datalab
Compute Engine の VM が作成されます。この時に zone の選択を求められた場合、 6 を入力して asia-northeast-a を選択します。 VM が起動したら、 SSH の鍵ペアのパスフレーズの入力を求められますので、設定します。
設定後、再度パスフレーズの入力を求められるので、先ほど設定したパスフレーズを入力します。入力が完了すると、 Cloud Datalab の起動が行われ、以下のメッセージが表示されます。
The connection to Datalab is now open and will remain until this command is killed.
Click on the *Web Preview* (up-arrow button at top-left), select *port 8081*, and start using Datalab.
メッセージに書かれている通りに、上の図の Web Preview のアイコンをクリックして、 Change Port メニューを選択し、 Port 8081 をクリックします。別のタブで下の画面のように Google Cloud Datalab が開くでしょう。
早速、 [+Notebook] をクリックし、新規にノートを作成します。
ノートの編集画面では、上の画像のようなメニューが表示されています。 ”Add Code” で新しくコードブロックを追加することが可能です。初期状態ではコードブロックの入力ボックスが1つ表示されていますので、以下のコードを追加します。
まず、可視化に使うライブラリと BigQuery API をインポートします。
import pandas as pd
import seaborn as sns
import datalab.bigquery as bq
次に、 BigQuery 上の dataset をロードするコードブロックを追加します。 bq.Datasets クラスを使うとプロジェクトの dataset を取得することができます。
datasets = bq.Datasets(project_id = 'cloud-datalab-samples')
for ds in datasets:
print ds.name
ここまでで一旦、上部メニューの “Run” をクリックしてみましょう。下の画面のように表示されていれば、成功です。
ここで使用している cloud-datalab-samples は、 Cloud Datalab のチュートリアルのために用意された BigQuery のプロジェクトです。上の図に表示されている通り、 httplogs , appenginelogs , carprices という3つのデータセットを持っています。
今回はこの中の、 HTTP ログデータのサンプル ( httplogs ) を使って可視化を行います。このログデータは、以下の表のようなデータとなっています。
timestamp | latency | status | method | endpoint |
---|---|---|---|---|
2014-06-15 07:00:00.536486 | 48 | 200 | GET | Interact3 |
2014-06-15 07:00:00.003772 | 122 | 200 | GET | Interact3 |
2014-06-15 07:00:00.428897 | 144 | 200 | GET | Interact3 |
それでは、データ取得用のコードブロックを追加しましょう。まず、1つのコードブロックを追加し、以下のように記述します。
%%sql --module logspreview
SELECT latency FROM [cloud-datalab-samples:httplogs.logs_20140615] LIMIT 1000
このコードブロックで、 logspreview というモジュールに SQL 文が追加されます。これを実行するには、もう1つコードブロックを追加し、以下のコードを追加します。
q = bq.Query(logspreview)
results = q.results(use_cache = False)
Results にクエリの結果が格納されました。さらに1つのコードブロックを追加し、可視化のためのコードを追加します。
dataframe = pd.DataFrame(list(results))
g = sns.distplot(dataframe["latency"])
上記の図のように、レイテンシーのヒストグラムが描けたかと思います。
このように、 Cloud Datalab を使えば少しの労力で GCP 上のデータを可視化することが可能です。
上部メニューの “Notebook” の [Download] をクリックすると、ここまでに作成したノートブックをダウンロードすることができます。データや可視化結果の共有や再利用に役立ちます。
おわりに
いかがでしたか。 Cloud Datalab を使えば簡単に GCP 上のデータを可視化することができます。 Cloud Storage にたまったログデータの解析や、 BigQuery 上のデータの可視化といったタスクに威力を発揮します。
同じシリーズの記事
-
【GCP入門編・第22回】 Stackdriver Logging で収集したログに対して、フィルタの実行や警告を設定しよう!
-
【GCP入門編・第21回】 Stackdriver Logging でアプリケーションのログを収集しよう!
-
【GCP入門編・第20回】 手間いらずでログ管理ができる Stackdriver Logging のご紹介!
-
【GCP入門編・第19回】 Stackdriver Monitoring でメールや Slack による通知を設定しよう!
-
【GCP入門編・第18回】 Stackdriver Monitoring で Google App Engine の監視をしよう!
-
【GCP入門編・第17回】 Stackdriver Monitoring で Google Compute Engine を監視しよう!
-
【GCP入門編・第16回】アプリのパフォーマンスを視覚的に確認できる Stackdriver Monitoring を紹介!
-
【GCP入門編・第15回】 GCP から AWS までモニタリングできる Google Stackdriver を紹介!
-
【GCP入門編・第14回】 Cloud Functions を使ってサーバレスアーキテクチャを体験しよう!
-
【GCP入門編・第13回】 Cloud Datalab でデータの可視化を行ってみよう!
-
【GCP入門編・第12回】 BigQuery を使って気軽にビッグデータの解析を行ってみよう!
-
【GCP入門編・第11回】 Google Cloud Dataproc を使ってデータを解析しよう!
-
【GCP入門編・第10回】スケーラブルな NoSQL データベースサービス Cloud Bigtable を使ってみよう!
-
【GCP入門編・第9回】 Cloud Shell で、いつでもどこでも Google Cloud Platform (GCP) が操作可能に!
-
【GCP入門編・第8回】 Container Registry での Docker イメージの使用方法!
-
【GCP入門編・第7回】知らなきゃ損! Google Container Engine (GKE) での Dockerイメージを使ったコンテナの起動方法!
-
【GCP入門編・第6回】これは簡単! Google App Engine での Cloud Datastore の利用方法!
-
【GCP入門編・第5回】 Google App Engine の魅力とは? Google App Engine (GAE) でのアプリケーション起動方法!
-
【GCP入門編・第4回】すぐ出来なくても大丈夫!サンプルアプリで Google Compute Engine (GCE) の動作練習!
-
【GCP入門編・第3回】難しくない! Google Compute Engine (GCE) でのインスタンス起動方法!
-
【GCP入門編・第2回】まずは、ここから!知らないと恥ずかしい Google Cloud Platform (GCP) の事前準備!
-
【GCP入門編・第1回】エンジニア必読!今さら聞けない、Google Cloud Platform (GCP) とは?