ブログ

TabPyとは?TableauにPythonを連携する手順をわかりやすく解説

#Tableau #Python #連携 #Tabpy

積極採用中
セミナー情報

データビジュアライゼーションの強力なツールであるTableauを、さらに進化させたいと思ったことはありませんか?

Pythonの計算力と組み合わせることで、その可能性は大きく広がります。

この記事では、TableauとPythonを連携させるための鍵となるTabPy(Tableau Python Server)の基本概念から、具体的な導入手順、さらにはTabPyを使ったデータ可視化事例までを詳しく解説していきます。

TabPyを使えば、複雑なデータ分析を直感的なビジュアルで表現でき、より深いインサイトが得られるようになるでしょう。

TableauとPythonの架け橋であるTabPyを用いてデータを自在に扱い、ビジネスに活かす力を手に入れましょう。

TabPy(Tableau Python Server)とは?

Tableau公式サイトによると、TabPy (Tableau Python Server)とは、ユーザーがTableauの表計算を介してPythonスクリプトと保存された関数を実行できるようにすることでTableauの機能を拡張する、分析拡張機能の一種です。

すなわち、TabPyは「TableauとPythonを連携させることで、Tableau上でPythonライブラリを活用し、より高度なデータビジュアライゼーションを実現する」ために利用する機能です。
TabPyを使うことで、Tableau単体では実現できない高度な統計処理や機械学習モデルの適用が可能になります。

たとえば、「顧客の購入履歴データから次に購入可能性の高い商品を予測する」といった分析が行えるようになるでしょう。
実際にTabPyを利用する際は、Tableauのダッシュボード上でPythonスクリプトを書いて実行する流れになります。このスクリプトはTabPyサーバーに送信され、処理された結果がTableauに戻され、リアルタイムでのデータ更新や予測値の視覚化が可能となります。

このようにTabPyは、Tableauの機能を大きく拡張し、より深いデータのインサイトを得るための強力なツールです。TableauやPythonに慣れている方であれば、簡単に始めることができ、自身の分析スキルを大幅に向上させることができるでしょう。

TabPyを導入することで、Tableau単体では実現できなかった分析が可能になります。以下の表で主な違いを確認しましょう。

Tableau単体とTabPyの機能比較

比較軸 Tableau単体 TabPy導入後
統計処理 基本的な集計・平均・中央値 回帰分析・時系列予測など高度な統計
予測モデル トレンドラインのみ scikit-learnなどの機械学習モデルを直接適用
Pythonライブラリ 利用不可 pandas・numpy・statsmodelsなどフル活用
テキスト分析 利用不可 NLTKやBERTなどで感情分析・分類が可能
処理の再利用 計算フィールドで都度記述 TabPy Clientでモデル・関数をデプロイして再利用

 
 Tableau初心者でTableauの具体的な学習方法について知りたい方は、以下の記事も参考にしてみてください。
    ◆【初心者向け】Tableauの学習方法ロードマップ オススメの学習コンテンツとともに

TabPyの利用手順

ここでは、実際にTabPyを利用する流れをご紹介します。

TabPyを利用するには、以下4ステップの設定を行う必要があります。

Step1:Pythonをインストールする
Step2:TabPyを起動する
Step3:TableauにTabPyを接続する
Step4:Tableau上でPythonを実行する

また、参考情報として、「Tabpy Client」(定義した関数をTabpyサーバー上に保存するツール)についても簡単に解説します。

【Step1】Pythonをインストールする

まず初めに、TabPyを利用する上での基本となる「Pythonのインストール」を行います。

主なインストール方法は、以下の3通りあります。

  • Anaconda経由でインストールする
  • Python公式サイトからインストールする
  • Githubからダウンロードする

今回は、Anaconda経由でインストールする方法で進めていきます、

ダウンロードセクションから、お使いのオペレーティングシステム(Windows、Mac等)に合った最新バージョンを選択してください。

 
インストーラーをダウンロードした後、指示に従ってインストールを進めます。

インストール中には、「AddAnacondan to my PATH」のオプションを選択することを忘れないでください。これにより、コマンドラインからPythonを簡単に起動できるようになります。

 
インストールが完了したら、コマンドプロンプト(Macの場合はターミナル)を開き、「python –version」と入力して、インストールが正しく完了したかを確認します。

正しくバージョンが表示されれば、Pythonのインストールは成功です。

 

【Step2】TabPyを起動する

Pythonのインストールが完了したら、次はTabPyを起動します。

TabPyを起動することで、TableauからPythonのスクリプトを実行する橋渡しができるようになります。

コマンドプロンプト(Macの場合はターミナル)を開き、「pip install tabpy」と入力して、TabPyをインストールしてください。

 
インストール後、ターミナルにtabpyと入力するとTabPyサーバーが起動します。

サーバーが起動すると、コンソールにはポート番号(通常は9004)が表示されます。

これが、TableauとTabPyが通信するためのポートになります。この手順を踏むことで、TableauからPythonスクリプトを呼び出す準備が整います。

【Step3】TableauにTabPyを接続する

TabPyが起動した後は、Tableauとの接続を設定します。これにより、Tableau内からPythonスクリプトを使用してデータ分析を行えるようになります。

まず、Tableauを開いてメインメニューの画面上部にある「ヘルプ」>「設定とパフォーマンス」>「分析の拡張機能接続の管理」>「Tabpy」を順にクリックします。

「新規Tabpy接続」の画面で、ホスト名を「localhost」、ポート番号を「9004」と入力します。

 

【Step4】Tableau上でPythonを実行する

TableauとTabPyが接続されたら、次はTableau上でPythonスクリプトを実行してみましょう。これにより、データ分析や高度な計算を行うことができます。

TableauとTabPyの連携の流れは、以下の3ステップで実行されます。

Step1:計算フィールドの入力【Tableau】
Step2:計算フィールドの実行【Tabpy】
Step3:計算フィールド結果の出力【Tableau】

 

Step4-1:入力

Tableauの「新しい計算フィールドの作成」から、Pythonで実行するスクリプトを記載します。

上図において、_arg1やarg2と記載しているものは、TableauからPythonのスクリプトに渡す引数を示しています。

SCRIPT_REATは、Pythonのスクリプトの戻り値がREAL型(浮動小数点数)であることを宣言するものです。

Step4-2:実行

計算フィールドにスクリプトを記載すると、TabPyの方にデータが出力され計算が実行されます。

ここの段階で、操作をする必要はありません。

Step4-3:出力

計算が終了すると、Tableauの方で計算結果が出力可能になります。

Tableau上で計算フィールドをビューにドラッグすることで、Pythonスクリプトの実行結果を視覚的に確認できます。

以上の3Stepにより、Tableauのビジュアライズ機能とPythonの強力なデータ処理能力を組み合わせることが可能になり、より深いデータ分析が行えるようになります。

【参考】TabPy Clientの利用方法について

TabPy Clientとは、事前に定義した関数をTabPy上に保存(デプロイ)しておくために使われるツールです。

このツールを使うことで、Tableau上で複雑な計算フィールドを作成したり、作成済みのモデルや関数を再利用したりすることができます。

TabPy Clientを利用するには、TabPyを起動した状態でJupyter notebook上で関数を定義し、TabPyにデプロイする必要があります。

TabPy Clientを利用するには、コマンドプロンプト(Macの場合はターミナル)を開き、「pip install tabpy-client」と入力してインストールを行います。

 
次に、保存したい関数を記述するためのJupyter notebookを起動します。Anaconda NavigatorからJupyter notebookを起動します。

tabpy_clientをインポートした後にclientを定義します。

 
その後、定義したい関数を記述します。この例では引数x、yを足し算するための関数を定義します。

戻り値を記載するreturnのところでは、tolist()を適用することで、リスト型に変換しています。

Tableau側で戻り値を処理する場合には、ndarray型では処理できないためlist型に変換する必要があります。

 
上記のコマンドを実行したことで、TabPyには関数がデプロイされています。Jupyter notebook上で関数の確認をすることも可能です。

 
Tableauの計算フィールドで定義した関数を利用する場合には、上記のようにresultsを確認したのと同じように関数の実行をスクリプトとして記述します。

Tableau計算フィールドでの記述

このようにJupyter notebook上でのモデルや関数を定義することで、Tableau側での操作を簡略化することが可能となります。

TabPyを使ったビジネス活用シナリオ

TabPyの導入手順を理解したところで、実際のビジネス現場でどのように活用できるかを見ていきましょう。

「技術的には面白そうだが、業務にどう使えばいいかわからない」という方も多いのではないでしょうか。ここでは、現場ですぐにイメージできる4つのシナリオを紹介します。

ケース1:売上予測・需要予測への活用

TabPyを使えば、PythonのProphetやscikit-learnの予測モデルで算出した「来月の売上予測値」を、Tableauのダッシュボード上に実績値と並べてリアルタイム表示することができます。
「先月と比べて需要が増加しているのか、それとも落ち込んでいるのか」といった意思決定の根拠を、現場の担当者が直感的に読み取れる形で提供できるのが大きなメリットです。

▽イメージ画像

参照:https://public.tableau.com/app/profile/tableau.for.sales.analytics/viz/SalesForecastDashboard_2/QuarterlyForecastDashboard

ケース2:顧客のセグメンテーション・クラスタリング

Pythonのk-meansなどのクラスタリング手法でCRM・購買データを分析し、「どの顧客がどのセグメントに属するか」をTableau上で色分け表示することが可能です。
マーケティング施策の立案や、ターゲットを絞ったアプローチの判断材料として活用できます。

▽イメージ画像

参照:https://public.tableau.com/app/profile/tableau.for.sales.analytics/viz/ExecutiveSalesforce_10_01_3/QuotaAttainment

ケース3:テキストデータの感情分析

アンケートや口コミデータをPythonで感情分析し、「ポジティブ/ネガティブ」のスコアをTableauのダッシュボードで可視化できます。NLTKやBERT(Transformers)などのライブラリを活用することで、テキストデータの傾向を定量的に把握でき、顧客満足度の変化を時系列でモニタリングしたり、改善が必要な領域を迅速に特定したりすることができます。

▽イメージ画像

参照:https://public.tableau.com/app/profile/tableau.for.marketing/viz/TwitterSentimentAnalysis-ScatterPlot/TwitterSentimentAnalysis

ケース4:異常値の検知・アラート

製造ラインのセンサーデータや、ECサイトの売上データ、従業員の労務データなどに対してPythonの異常検知モデルを適用し、通常範囲を外れた値をTableauでハイライト表示することもできます。これにより、トラブルの早期発見や、対応アクションのトリガーとして活用できます。

▽イメージ画像

参照:https://public.tableau.com/app/profile/lintao/viz/Occupationalhealthandsafety/Home

ビジネス活用シナリオ一覧

活用シナリオ 使用するPythonライブラリ例 Tableauでの表示イメージ
売上・需要予測 scikit-learn / statsmodels / Prophet 予測値と実績値を折れ線グラフで並べて表示
顧客セグメンテーション scikit-learn(k-means) クラスターごとに色分けした散布図
感情分析・テキスト分析 NLTK / transformers(BERT) 感情スコアを棒グラフや地図上で可視化
異常値検知 scikit-learn / PyOD 通常範囲を外れたデータをハイライト表示

 

【実践】TabPyを活用した、Tableauでのデータ可視化事例

ここでは、Titanicの生存データをサンプルに利用して、TabPyの使い方を示します。大まかな流れとしては、以下の4つになります。

  1. トレーニング用のデータを用意
  2. 重要と思われる特徴量を取得し、モデルを作成
  3. モデルから入力値に対する予測値を返す関数を定義
  4. Tabpy Serverにデプロイ

Titanicのデータでの目的変数は、生存を示すフラグであるserviveを利用します。説明変数は、客室の等級(pclass)、性別(sex)、年齢(age)、タイタニックに同乗している兄弟/配偶者の数(sibsp)、タイタニックに同乗している親/子供の数(parch)、料金(fare)、客室番号(cabin)を利用してみます。モデルとしては決定木を使って生存のフラグを分析します。

モデル作成までのPythonのスクリプトは下記のようなものを利用しています。

 
上記のスクリプトを実行すると決定木のグラフを得ることができます。結果から見ると、sex_female、pclass、age、sibspが重要と思われる変数なので、この44つのダミー化された変数を抽出して、再度モデルを作成・フィッティングするという作業を最後に行うことで、モデルを作成しています。

 
モデルが完成したら次にTabpy Serverにデプロイします。デプロイのためのコード例は下記のような形です。モデルの引数として、ダミー化された引数を渡す想定で、sex、pclass、age、sibspという引数を関数に渡して、モデル内で処理できるようにしています。

 
関数のデプロイまで完了した後は、Tableauからの操作になります。「TabPyの利用手順」にてご紹介した手順からTabpy ServerとTableauの接続を行います。

接続後は、計算フィールドから下記のような形で今回デプロイした関数であるclf5dを呼び出します。引数としては、決定木のモデルに対応するものを順番に指定しています。

ここでの計算フィールドの名称として「tabpy_query_clf5」と名付けられたこの計算処理は、生存/非生存の予測を返すものになります。

 
予測値自体は色々な使い方ができるのですが、例えば、テストデータでみたとき、男女ではやはり女性の方が生存のフラグの予測がより1に近い濃い水色なっていることが分かります。

他にも乗船客の詳細な属性データが利用可能な場合では、属性に対して生存/非生存の予測値がどのように関係しているのかなど生存確率を踏まえた分析が可能となります。

まとめ

この記事を通じて、TabPyとその設定手順、さらに具体的な活用事例について詳しく解説しました。

TabPyはTableauとPythonの強力な連携を実現するツールであり、高度なデータ分析や機械学習モデルをビジュアライゼーションの世界に取り入れることができます。

具体的には、Pythonをインストールし、TabPyを設定してTableauに接続することから始めます。

このプロセスを経て、Tableau上でPythonスクリプトを直接実行できるようになります。

TabPyの導入により、TableauユーザーはPythonの強力なデータ処理機能を活用することが可能となり、データビジュアライゼーションの可能性をさらに広げることができます。

これにより、企業や研究者は複雑なデータセットからより豊かなインサイトを引き出せるようになるでしょう。

この記事が、TableauとPythonを連携させたデータ分析を検討している方々にとって、理解を深めるための役立つガイドとなれば幸いです。

<Tableau>
弊社ではSalesforceをはじめとするさまざまな無料オンラインセミナーを実施しています!
>>セミナー一覧はこちら

また、弊社ではTableauの導入支援のサポートも行っています。こちらもぜひお気軽にお問い合わせください。
>>Tableauについての詳細はこちら

CONTACT
お問い合わせ

ご相談やご依頼、病院マスタなどについてのお問い合わせはこちらのお問い合わせフォームから。

サービスなどについてのお問い合わせ 病院マスタについてのお問い合わせ

メールお問い合わせ