Google Cloud Datalabを使ってBigQueryのデータを分析する

f:id:vasilyjp:20180927090637j:plain


こんにちは。VASILYでインターンとして働いている永井です。大学では統計の研究をしていて、VASILYでは主にデータ分析に取り組んでいます。今回は先月の10月13日にβ版で提供開始となったGoogle Cloud Datalabを試してみたので、その紹介をしたいと思います。

1.Cloud Datalabとは?

2.準備

3.Notebookの作成

4.BigQueryからのデータ取得

5.取得したデータの可視化

という流れで紹介していきます。

 Cloud Datalabとは?

 Cloud Datalabの特徴

Cloud Datalabは、Google Cloud Platform上で起動するJupyter Notebook(旧IPython Notebook)のことです。
特徴としては、

・BigQuery、Compute Engine、Cloud Storage上にあるデータの分析をPython、SQL、JavaScriptでおこなえる

・Jupyter Notebookを使用しているのでデータを対話的に分析でき、分析結果の描画、保存、共有などが簡単に行える

・料金はCompute EngineやBigQueryなどを使った分だけ課金される 

ということがあげられます。VasilyではデータをBigQueryを使って管理していて、自分が普段Jupyter Notebookを使ってデータ分析をおこなっているので、今回試してみることにしました。

Jupyter Notebookとは?

Jupyter Notebookは元々はIPython Notebookという名前で使われていて、 Pythonをウェブブラウザ上で対話的に実行し、保存、共有ができるサービスです。Jupyter NotebookはそれをRやJulia、Scala等他の言語(現在は40以上の言語)でも使えるようにしているもので、現在ではIPython NotebookもJupyterプロジェクトの一部、という扱いになっています。

Cloud Datalabの使い方は基本的にはJupyter Notebookと同じなので、普段Jupyter NotebookやIPython Notebookを使用している人は普段と同じように使えると思います。

では、実際にCloud Datalabを試していきます。

 準備

Cloud Datalabを使い始めるためには、Googleアカウントを取得し、Google Cloud Platformに登録する必要があります。ここで課金のための情報登録が必要になりますが、60日間、300ドル分までの無料期間が用意されています。逆にGoogle Cloud Platformに登録する以外には難しい設定は必要なく、Google Cloud Platformで新しいprojectをつくれば、後はCloud DatalabのページでDeploy Datalabボタンをクリックして少し待つだけでCloud Datalabを使えるようになります。

 

Notebookの作成

分析を始めるには、まずNotebookを作成します。Notebookはボタンを押せば新しいNotebookがすぐに作成できます。

 

これでNotebookが作成できました。後はPythonのコードを矢印で示した"Cell"に入力しながら対話的にデータを分析していくことになります。
今回はCloud Datalabの特徴である、BigQueryからのデータの読み込みを行い、結果を可視化するところまでを行いたいと思います。

使用するデータはBigQueryにサンプルデータとして用意されているgithub_timelineというテーブルで、これは過去ある期間にgithubに作成されたレポジトリの作成日時、使用言語等が入っているものです。

 BigQueryからのデータ取得

Cloud DatalabからBigQueryのデータを取得するには、gcp.bigqueryをimportし、
bq.Query(query内容)として実行するだけです。
結果だけを表示したい場合にはbq.Query(Query内容).results()とすれば表示できます。

 また、Queryを変数として保存し、それを使ってQueryを実行するということもできます。結果をpandasのDataFrameとして出力したい場合は、df= b q.Query(Query内容).to_dataframe()とすれば変数dfに結果を出力することもできます。

今回はテーブルから、レポジトリ作成日、閲覧数、言語を作成日が新しいものから上位百万件を取得しています。

取得したデータの可視化

DataFrameに出力したデータは、通常のPythonと同様に、matplotlibを使って可視化することもできます。

例えば日ごとのレポジトリ閲覧数合計の推移を図示したり、

言語ごとに閲覧数を合計して図示したりもできます。

 また、分析した結果は通常のJupyter Notebookと同様にhtmlとして出力したり、nbviewerで見れるようにして一般に公開することもできます。

今回試した内容を下記で公開しているので、興味のある方は確認してみてください。
http://nbviewer.jupyter.org/gist/ngyk/60799e83e8e4d4a09780?flush_cache=true 

使ってみた感想

今回はBigQueryからデータを取得してそれを描画する、ということを試してみましたが、やはり同じCloud Platform上で動いているということで、簡単にデータを取得することができました。今回は紹介できませんでしたがCloud Storageへのデータの読み書きも簡単にできるので、今後もデータ分析に使っていくつもりです。また、インタラクティブな図表を作成できる機能など、使いきれていない部分もまだまだ多いので、これからさらに勉強していきたいと思います。

 最後に

VASILYのデータサイエンスチームでは、分析を効率良く、集中しておこなえるように新しいツールも積極的に取り入れてデータ分析に取り組んでいます。
もちろん分析内容としても色々なことに挑戦していて、多腕バンディット問題をプッシュ通知配信の最適化に応用したり、トピックモデリングという文章分類に使われる手法をユーザーのLikeデータに適用し、ユーザーの隠れた嗜好を推定してレコメンドに応用するといったことや、ユーザーの口コミをネットワーク分析によって明らかにすることで、ファッションに関する情報伝播がどのような構造になっているのか解明するといったことを行っています。
また、ここには書ききれないこともたくさんありますので、こういった取り組みに少しでも興味があるという方がいれば、是非こちらからご応募をよろしくお願いいたします。 

カテゴリー