TableauとPythonの連携でできること
TableauとPythonを連携させることで、データ分析のワークフローを大幅に拡張できます。Tableauの視覚化能力とPythonの高度な分析機能を組み合わせることによって、単体では実現できない複雑な分析タスクも実行可能になります。
【サンプルコード】
# TabPyを使用してTableauからPythonスクリプトを実行する例
import pandas as pd
import numpy as np
from sklearn.cluster import KMeans
# TabPyに公開する関数を定義
def kmeans_clustering(data, n_clusters):
# データフレームに変換
df = pd.DataFrame(data)
# K-means クラスタリングを実行
kmeans = KMeans(n_clusters=n_clusters, random_state=42)
df['cluster'] = kmeans.fit_predict(df)
# 結果を返す
return df.to_dict(orient='records')
【実行結果】
# Tableauから関数を呼び出した結果
[
{"x": 1.2, "y": 2.3, "cluster": 0},
{"x": 5.7, "y": 3.1, "cluster": 1},
{"x": 1.5, "y": 1.9, "cluster": 0},
{"x": 6.2, "y": 3.5, "cluster": 1}
]
TabPyというサーバーを利用することでTableauからPythonスクリプトを実行できます。この連携により、機械学習モデルの結果をTableauのダッシュボードに直接表示したり、カスタム計算を実行したりすることが可能です。
Pythonで作成した分析結果をTableauで視覚化するワークフローも構築できます。事前処理や複雑な計算をPythonで行い、その結果をCSVやデータベースに保存してTableauから参照する方法が一般的です。
Tableauで活用できるPythonライブラリ
TableauとPythonを連携する際には、データ分析や機械学習に特化した多様なライブラリを活用できます。特にPandasやScikit-learnなどのライブラリはTableauのデータ分析機能を補完する役割を果たします。
【サンプルコード】
# Tableauで使用するための時系列予測モデル
import pandas as pd
import numpy as np
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import train_test_split
def predict_sales(historical_data, forecast_periods=12):
# データ準備
df = pd.DataFrame(historical_data)
# 特徴量エンジニアリング
df['month'] = pd.to_datetime(df['date']).dt.month
df['year'] = pd.to_datetime(df['date']).dt.year
# 学習データとテストデータに分割
X = df[['month', 'year']]
y = df['sales']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# モデル学習
model = RandomForestRegressor(n_estimators=100, random_state=42)
model.fit(X_train, y_train)
# 将来予測用のデータフレーム作成
last_date = pd.to_datetime(df['date'].max())
future_dates = [last_date + pd.DateOffset(months=i+1) for i in range(forecast_periods)]
future_df = pd.DataFrame({
'date': future_dates,
'month': [d.month for d in future_dates],
'year': [d.year for d in future_dates]
})
# 予測実行
future_df['predicted_sales'] = model.predict(future_df[['month', 'year']])
return future_df[['date', 'predicted_sales']].to_dict(orient='records')
【実行結果】
[
{"date": "2023-01-01", "predicted_sales": 1250.45},
{"date": "2023-02-01", "predicted_sales": 1320.78},
{"date": "2023-03-01", "predicted_sales": 1450.21},
{"date": "2023-04-01", "predicted_sales": 1520.33},
{"date": "2023-05-01", "predicted_sales": 1620.67}
]
PythonのPandasライブラリを使用することでデータの前処理や変換、集計などの操作をTableauに渡す前に実行できます。これにより、Tableauでは難しい複雑なデータ操作もスムーズに行えるようになります。
Scikit-learnやTensorFlowなどの機械学習ライブラリを活用することによって、予測モデルやクラスタリング分析の結果をTableauで視覚化できます。これらのライブラリによりTableauの分析能力を大幅に拡張することが可能です。
PythonとTableauを連携するための設定方法
TableauとPythonを連携するには、TabPyサーバーのセットアップと適切な設定が必要です。この設定により、TableauのワークブックからPythonスクリプトを直接実行できるようになります。
【サンプルコード】
# TabPyのインストールと起動
# 1. TabPyをインストール
pip install tabpy
# 2. TabPyサーバーを起動
tabpy
# 3. 関数をTabPyサーバーに登録するスクリプト
from tabpy.tabpy_tools.client import Client
# TabPyクライアントを初期化
client = Client('http://localhost:9004/')
# 関数定義
def multiply(x, y):
return x * y
# 関数をTabPyに登録
client.deploy('multiply', multiply, 'Multiplies two numbers', override=True)
【実行結果】
[INFO] Loading state from state file
[INFO] Will be saving state to /Users/username/.tabpy/state.txt
[INFO] Done loading state
[INFO] Web service listening on port 9004
[INFO] Register function as an endpoint with config=[TabPyAppClientConfig(deployment_version=1, name=multiply, description=Multiplies two numbers, type=model, target=None)]
[INFO] Successfully deployed multiply
TabPyサーバーをセットアップした後、Tableauで外部サービス接続を設定します。Tableauの「ヘルプ」メニューから「設定と実行」を選択し、「外部サービス接続」でTabPyサーバーのURLとポートを入力することによって連携が完了します。
Tableauの計算フィールドからPython関数を呼び出すには、SCRIPT_*関数を使用します。例えばSCRIPT_REAL("return _arg1 * _arg2", [Field1], [Field2])のように記述することで、PythonスクリプトをTableau内で実行できるようになります。
TableauとPythonを使った実践的なデータ分析例
TableauとPythonを組み合わせた実践的なデータ分析では、Pythonで高度な処理を行い、その結果をTableauで視覚化するワークフローが有効です。このアプローチにより、複雑なデータ分析タスクも効率的に実行できます。
【サンプルコード】
# 感情分析をTableauで可視化するためのPythonスクリプト
import pandas as pd
from textblob import TextBlob
def sentiment_analysis(text_data):
# データをリストに変換
if isinstance(text_data, str):
texts = [text_data]
else:
texts = list(text_data)
# 感情分析を実行
results = []
for text in texts:
if pd.isna(text) or text == '':
results.append({
'text': text,
'polarity': 0,
'subjectivity': 0,
'sentiment': 'neutral'
})
continue
analysis = TextBlob(str(text))
polarity = analysis.sentiment.polarity
# 感情ラベルを決定
if polarity > 0.1:
sentiment = 'positive'
elif polarity < -0.1:
sentiment = 'negative'
else:
sentiment = 'neutral'
results.append({
'text': text,
'polarity': polarity,
'subjectivity': analysis.sentiment.subjectivity,
'sentiment': sentiment
})
return results
【実行結果】
[
{
"text": "このサービスは素晴らしいです!",
"polarity": 0.8,
"subjectivity": 0.75,
"sentiment": "positive"
},
{
"text": "使いにくいインターフェースで残念です",
"polarity": -0.6,
"subjectivity": 0.5,
"sentiment": "negative"
},
{
"text": "普通に機能しています",
"polarity": 0.05,
"subjectivity": 0.2,
"sentiment": "neutral"
}
]
テキスト分析はTableau単体では難しい処理ですが、Pythonと連携することで顧客レビューの感情分析やトピックモデリングなどが可能になります。これらの分析結果をTableauのダッシュボードに統合することによって、テキストデータに関する深い洞察を視覚的に表現できます。
地理空間分析でもPythonとTableauの連携が効果的です。GeoPandasやShapelyなどのPythonライブラリを使って複雑な地理空間演算を行い、その結果をTableauで地図上に表示することができます。これにより、位置情報に基づく高度な分析も実現可能です。
※上記コンテンツの内容やソースコードはAIで確認・デバッグしておりますが、間違いやエラー、脆弱性などがある場合は、コメントよりご報告いただけますと幸いです。
ITやプログラミングに関するコラム
Gitでブランチ(branch)を作成する方法
crontabの書き方
PDFをExcelに変換する方法
Excelでプルダウンを設定する方法
エクセルでページ区切りを設定する方法
Markdownの取り消し線の書き方
ラズベリーパイでできること9選
Gitでbranch(ブランチ)を削除する方法をローカル・リモート別に解説
git addの取り消し方法を状況別に解説
CSSのstickyプロパティでWebサイトに固定要素を実装する方法
ITやプログラミングに関するニュース
アイアール技術者教育研究所がエクセルギー解析計算ウェビナーを開催、省エネと環境負荷低減に貢献
フラー株式会社がアプリ市場トレンド解説ウェビナーを3月25日に開催、成長アプリの共通項とデータ活用を解説
株式会社BOTANICOが2026年版X運用最新戦略ウェビナーを開催、成果につなげる資産型運用を解説
AIストーム株式会社がOpenClaw活用セミナーを開催、AIエージェントがビジネス現場を変革
株式会社オロが建設コンサルティング業向けウェビナーを開催、技術部門の損益可視化を支援
アルティウスリンク株式会社が経理向けBPO活用ウェビナーを開催、課題解決と業務効率化を支援
株式会社日本計画研究所がAI時代のインフラセミナー開催、GPUとデータセンターの課題を解説
株式会社カウンターワークスがリーシング業務AI活用ウェビナー開催、既存ツールでAIエージェント実践
株式会社セキドがDJI産業機セミナーを福井で開催、3Dデータ活用と機材選定を無料解説
株式会社ナビットが補助金活用ウェビナーを開催、販促費削減と集客力向上を解説
