28
15

More than 5 years have passed since last update.

Google Colaboratory と Altair で描く君の知らないグラフの物語

Last updated at Posted at 2018-12-18

この記事はリクルートライフスタイル Advent Calendar 2018の19日目の記事です。

はじめに

はじめまして。社内で分析基盤を構築している@_snow_narcissusです。

リクルートライフスタイルではデータ分析を用いた施策提案を積極的に行なっており、誰もが簡単にデータを扱える環境を整えています。

現在社内でのデータの可視化の際にはTableauを用いる場面が多いですが、ライセンスの問題から扱うことが困難な場面があります。

安価で簡単に、そして社内での情報共有がしやすいデータ可視化ツールを探していたところ、Google Colabratoryという素晴らしいツールに巡り会うことができました。

弊社ではGoogleスプレッドシート、Googleスライドを始めとするG Suiteを積極的に活用しており、Colaboratoryはこれらと同様にデータビジュアルを簡単に社内に共有することができます。

ちなみにこのColaboratoryですが、なんと無料です。その他にも「簡単にPython環境が手に入る」「BigQueryに簡単に接続できる」「GPUも無料で使える」「TensorFlowが事前インストールされている」といった特性をもつ機械学習入門に最適なツールになっております。

Colabratoryを用いた機械学習のお話は後々の投稿にて紹介するとし、今回はデータの可視化に焦点を当ててお話をさせて頂きたいと思います。

Colaboratoryを使ってみよう

それでは実際にColaboratoryを使ってみましょう。Googleアカウントがあれば誰でも使用することができます。
RunningColab.png
上図のようにGoogle Driveの「新規」ボタンから「その他」→「Colaboratory」の順に辿ってみてください。しかし、おそらく初期段階では「Colaboratory」の項目がないかと思いますので、その場合には「アプリを追加」から「Colaboratory」を検索し追加をしてください。

ColabDisplay.png

Colaboratoryを起動しますと、上記のようにJupyter Notebookによく似た画面が立ち上がり、この中でPythonを書くことができます。

データ分析に必要なパッケージはほぼ事前インストールされているのでimport pandas import tensorflowといったimport文は初めから使用することができます。

その他Colaboratoryの環境については【秒速で無料GPUを使う】深層学習実践Tips on Colaboratoryが詳しいので是非ご参照ください。@tomo_makesさん、いつもありがとうございます!

グラフ可視化ツールAltairとは

AltairとはVegaおよびVega-Liteを基にしたPython可視化ライブラリです。個人的には星の名前なのが気に入っています。

VegaおよびVega-Liteは、JSON形式でデータとプロットの形式を指定するとWebブラウザ上でインタラクティブにグラフが描画できるJavaScriptライブラリであり、AltairはこれのPythonバインディングにあたります。

Example Galleryを見ていただければ分かるように、色合いも豊かで様々なグラフを単純な構文で描くことができます。また、描画したグラフをそのままSVGおよびPNGで保存することもできます。

そして重要なのがColaboratoryではAltairを初期設定なしに使うことができます。これに関しては後の節で詳しくご説明したいと思います。

実際にグラフを描いてみよう

Colaboratory上でAltairを用いたグラフを描画してみます。

ColabMenu.png

上図のボタンをクリックし、開いたメニューの中から「コードスニペット」を選択し、フィルターにて「Altair」と絞るとAltairに関連したスニペットの一覧が表示されます。

このうちから一つを選択し矢印ボタンを押すと、下図のようにコマンドが自動的に書き込まれますので、後はそれを実行するだけで簡単にサンプルのグラフを得ることができます。

ColabAltairResize.png

他にも多数スニペットが用意されておりますので、是非逐一試してみて下さい。Altairが描く綺麗なグラフを見ることができるかと思います。

また、先に触れたように描画されたグラフを簡単に保存することができます。

ColabSaveGraph.png

上図のようにグラフの右上に表示されるボタンをクリックすることで、保存形式を指定してのダウンロードが可能です。

Altairで任意のデータを描画してみよう

もちろん実際の作業ではサンプルではなく、実際にどうグラフを描くかが大切になってきますので、その部分についてもご紹介します。

Altairではデータの指定として、Pandas DataFrame CSV JSON の3つを主に選ぶことができます。CSV JSON については、pandas.read_csv等で Pandas DataFrame に簡単に変換することができるので、ここでは Pandas DataFrame による描画についてご紹介します。

ここでは一般的によく用いられる株価の情報を図示してみます。是非下記のコマンドをColaboratory上で実行しグラフを描いてみて下さい。

import pandas as pd
stock_price = pd.DataFrame(
    {'Date': ['2007-10-01', '2007-11-01', '2007-12-01',
              '2007-10-01', '2007-11-01', '2007-12-01',
              '2007-10-01', '2007-11-01', '2007-12-01'],
     'company': ['AAPL', 'AAPL', 'AAPL',
                 'AMZN', 'AMZN', 'AMZN',
                 'GOOG', 'GOOG', 'GOOG'],
     'price': [189.95, 182.22, 198.08,
               89.15,  90.56,  92.64,
               707.00, 693.00, 691.48]})
print(stock_price)

上のようにpandasをimportし、Pandas DataFrameを作成します。

        Date company   price
0  2007-10-01    AAPL  189.95
1  2007-11-01    AAPL  182.22
2  2007-12-01    AAPL  198.08
3  2007-10-01    AMZN   89.15
4  2007-11-01    AMZN   90.56
5  2007-12-01    AMZN   92.64
6  2007-10-01    GOOG  707.00
7  2007-11-01    GOOG  693.00
8  2007-12-01    GOOG  691.48

後はこのデータを用いてAltairで描画するだけです。mark_line()が描きたいグラフの種類を表し、ここでは折れ線グラフを使います。また、ここで列の指定の後に続く T Q N はそれぞれ temporal quantitative nominalの略で、時間データ、量的データ、カテゴリデータであることを表します。

import altair as alt
alt.Chart(stock_price).mark_line().encode(
  x='Date:T',
  y='price:Q',
  color='company:N'
)

上記コマンドをColaboratory上で実行すると、下図のようなグラフが得られます。

visualization (2).png

他にも色々な素敵なグラフが得られますので、是非Example Galleryをみながら、Colaboratory上で色々と試してみて下さい。

おわりに

一般にデータを可視化する際には下記のような流れを辿ることが多いのですが、Colaboratoryには全てが用意されております。

  1. データソースをBigQueryやCSVファイルからインポートしデータフレームに変換
  2. データフレーム上で集計やNULL値埋めといった処理を行う
  3. 処理を施したデータを可視化ツールを用いた描画
  4. 可視化した内容をコミュニティに共有しフィードバックをもらう

「Pythonで分析を始めてみたいのだけど何から手をつければいいのか分からない」という人にとって最適なツールなのではないかと思います。

データ可視化、および機械学習に是非Colaboratoryを積極的に活用してみて下さい。

28
15
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
28
15