Tabpy - Tableau + Python 連携  を使ってみよう!(その1:Tabpy導入編)

Version 12

    2017/03/08: V10.2 発表により内容の修正

     

    皆さまこんにちは

     

    Tableau V10.2 の発表とともに、TableauPython連携(Tabpy)が正式発表されました。

    これによって、Tableau + R連携と全く同じようにして、SCRIPT_REAL やSCRIPT_INT関数を用いて計算フィールドから Python のコードを呼び出すことができるようになりました!

     

    参照:

    Tableau 10.2 | Tableau Software

     

    参照:Tableau with TabPy

    http://www.tableau.com/ja-jp/about/blog/2016/11/leverage-power-python-tableau-tabpy-62077

     

    ( ※ご注意:以下ご紹介するTabpy機能の中でPythonのコーディングについては、基本的にサポートの対象外となりますのでご了承の上参照ください。)

     

     

    Tableau Desktop が起動するPCTabpyサーバーをインストール、起動させ、計算フィールドを介してPythonのコマンドを実行します。これをTableauが受け取るという仕組みです( R連携でのRserveと一緒ですね。)

     

     

     

    ※ ちなみに、Tableau + R連携については以下を参照ください。

    Tableau + R 連携で知っておきたいこと

    https://community.tableau.com/docs/DOC-10017

     

    で、本題なのですが:

    今回はこのTableauPython連携を実現するためのTabpyサーバーのインストール方法をご紹介したいと思います。

     

    以下手順に従って実施ください。

     

    1.TabpyのモジュールはGithubにて管理されていますので、モジュールを取得するためGitをインストールします。

    https://git-scm.com/

     

    GitHubの使い方については以下を参照リンクなどを参照下さい。

    https://techacademy.jp/magazine/6235

     

     

    2.コマンドプロンプトから以下を実施し、TabpyGitリポジトリからダウンロードしてコピーします。

     

    >git clone git://github.com/tableau/TabPy

     

    3.ダウンロードしたディレクトリにTabpyというディレクトリが新しくできるので、その中に移動します。

     

    4.コマンドラインから setup.bat Windowsの場合)を実行します。 エクスプローラからダブルクリックではなく、コマンドラインから実行してください。Anacondaや必要なライブラリがインストールされます。(既存のPython がインストールされていると、うまくいかないかもしれません。今回は既存のPyrthonを削除してみました。)

     

     

    5.結構時間がかかりますが、最終的にPython のインストールが完了し、”Web Service listening on port 9004" というメッセージが出れば成功です!

     

     

    6.次にTableau V10.2から接続を行います。

     

    Tableau Desktopを開き、ヘルプ → 設定とパフォーマンス → 外部サービス接続の管理を選択します。

     

     

    Tabpyのホスト名(今回はlocalhost)とポート番号 9004 を設定します。

    Rserveの場合は6311でしたが、Tabpy9004です。このポート番号で接続する外部サーバーを切り替えています。)

     

     

    7.テスト接続を実施します。 これで完了です。

    思ったより簡単でした!!

     

     

    ※ Tablpyを再起動するには、インストールされたディレクトリからstartup.batを実行します。

    例)C:\Users\XXXXXi\Anaconda\envs\Tableau-Python-Server\Lib\site-packages\tabpy_server\startup.bat

     

     

     

    8.今回の例では、SalesProfitの相関係数をPythonで求めて、これに応じて散布図の色分けをしてみたいと思います。

     

    ※ 相関係数が正のとき確率変数には正の相関が、負のとき確率変数には負の相関があるといいます。

    相関係数 - Wikipedia

     

     

     

    計算フィールド ”Correlation Coefficient"を作成し以下を入力します。

     

    SCRIPT_REAL('

      import numpy as np

      return np.corrcoef(_arg1,_arg2)[0,1]

    ',

    SUM([Sales]), SUM([Profit]))

     

     

    9.以下の図のようにように散布図を作成します。

     

     

    10.Customer Nameを詳細にドラッグします。

    11.計算フィールド Correlation Coefficient"を色にドラッグし、表計算で次を使用して計算 =Customer Name を指定します。

     

    12.傾向線を追加します。

     

    13.相関係数がマイナスの場合、傾向線は右肩下がりとなり、色がオレンジ色になります。逆にプラスの場合、傾向線は右肩上がりとなり、色は青色になります。

     

    Python によって計算された相関係数によって色分けされているのがわかるかと思います。 

    計算された相関係数のマイナスのもののみフィルタすると、Salesが増えているのにProfitが逆に下がっているカテゴリをピックアップすることができます。

    (このカテゴリには何か問題があるということですよね?)

     

     

     

     

    Python には多くの 機械学習のライブラリが搭載されており、書籍もたくさん出版されています。 RだけでなくPython とも連携ができるようになり、ますますTableauのデータサイエンスツールとしての利用が期待できそうですね。

    ワークブックも文末に添付しますのでご参考ください

     

     

    続けてこちらの記事も参照ください。次はTabpyの入出力の仕組みを理解しながら簡単な計算を実施してみます。

    Tabpy - Tableau + Python 連携  を使ってみよう!(その2:入出力の仕組みと簡単な計算)

     

    ※ 本記事は Alexander Loth さんの以下のBlogを参照にしています。

    他にも参考になる記事がたくさんありますので、是非ご参照ください。

     

    TabPy Tutorial: Integrating Python with Tableau for Advanced Analytics

    http://alexloth.com/2016/11/06/tabpy-tutorial-integrating-python-tableau-advanced-analytics/

     

    なお、TabpyにおけるPythonのコーディングに関してはサポートの範囲外となります。

    またサポートもTableauに特化した領域に限定されますのでご留意ください。

     

    以上、参考になれば幸いです。