
【Python】Tableauと連携してできること
公開: 更新:TableauとPythonの連携でできること
TableauとPythonを連携させることで、データ分析のワークフローを大幅に拡張できます。Tableauの視覚化機能とPythonの分析機能を組み合わせると、単体では実現できない複雑な分析タスクも実行できます。
【サンプルコード】
import pandas as pd
import numpy as np
from sklearn.cluster import KMeans
def kmeans_clustering(data, n_clusters):
df = pd.DataFrame(data)
kmeans = KMeans(n_clusters=n_clusters, random_state=42)
df['cluster'] = kmeans.fit_predict(df)
return df.to_dict(orient='records')
行番号 | 詳細説明 |
---|---|
1-3行目 | 必要なライブラリをインポート |
5行目 | TabPyに公開するクラスタリング関数を定義 |
6行目 | 入力データをPandasデータフレームに変換 |
8行目 | K-meansクラスタリングアルゴリズムを初期化して実行 |
9行目 | 予測されたクラスタをデータフレームに追加 |
11行目 | 結果を辞書形式に変換して返す |
TabPyというサーバーを利用すると、TableauからPythonスクリプトを実行できます。この連携により、機械学習モデルの結果をTableauのダッシュボードに直接表示したり、カスタム計算を実行したりできます。
また、Pythonで作成した分析結果をTableauで視覚化するワークフローも構築できます。事前処理や複雑な計算をPythonで行い、その結果をCSVやデータベースに保存してTableauから参照する方法が一般的です。
【PR】『Python』を学べる企業・個人向けのプログラミングコース
Tableauで活用できるPythonのライブラリ
TableauとPythonを連携する際には、データ分析や機械学習に特化した多様なライブラリを活用できます。PandasやScikit-learnなどのライブラリは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')
行番号 | 詳細説明 |
---|---|
1-4行目 | 必要なライブラリをインポート |
6行目 | 時系列予測関数を定義 |
7行目 | 入力データをデータフレームに変換 |
9-10行目 | 日付から月と年を抽出して特徴量として追加 |
12-14行目 | 特徴量と目標変数を分離し、訓練データとテストデータに分割 |
16-17行目 | ランダムフォレスト回帰モデルを作成して訓練 |
19-24行目 | 将来予測用のデータフレームを作成 |
26行目 | モデルを使用して将来の売上を予測 |
28行目 | 日付と予測売上のみを抽出して辞書形式で返す |
PythonのPandas
ライブラリを使用すると、データの前処理や変換、集計などの操作をTableauに渡す前に実行することが可能です。実行することによって、Tableauでは難しい複雑なデータ操作もスムーズに行えます。
また、Scikit-learn
やTensorFlow
などの機械学習ライブラリを活用すると、予測モデルやクラスタリング分析の結果をTableauで視覚化できます。これらのライブラリによりTableauの分析能力を大幅に拡張できます。
Tableau連携のためのPython設定方法
TabPyサーバーをセットアップした後、Tableauで外部サービス接続を設定します。Tableauの「ヘルプ」メニューから「設定と実行」を選択し、「外部サービス接続」でTabPyサーバーのURLとポートを入力することで連携が完了します。
Tableauの計算フィールドからPython関数を呼び出すには、SCRIPT_*
関数を使用します。例えばSCRIPT_REAL("return *arg1 * *arg2", [Field1], [Field2])
のように記述することで、PythonスクリプトをTableau内で実行できます。
【サンプルコード】
pip install tabpy
tabpy
from tabpy.tabpy_tools.client import Client
client = Client('http://localhost:9004/')
def multiply(x, y):
return x * y
client.deploy('multiply', multiply, 'Multiplies two numbers', override=True)
行番号 | 詳細説明 |
---|---|
1行目 | TabPyをpipコマンドでインストール |
3行目 | TabPyサーバーを起動 |
5行目 | TabPyクライアントライブラリをインポート |
6行目 | ローカルホストで動作するTabPyサーバーに接続 |
8-9行目 | TabPyに登録する単純な関数を定義 |
11行目 | 関数をTabPyサーバーにエンドポイントとして登録 |
【PR】『Python』を学べる個人・中高生向けのプログラミングコース
TableauとPythonでデータ分析を実装する方法
テキスト分析はTableau単体だと難しい処理ですが、Pythonと連携することで顧客レビューの感情分析やトピックモデリングなどが可能になります。これらの分析結果をTableauのダッシュボードに統合することで、テキストデータに関する洞察を視覚的に表現することが可能です。
地理空間分析でもPythonとTableauの連携が効果的です。GeoPandas
やShapely
などのPythonライブラリを使って複雑な地理空間演算を行い、その結果をTableauで地図上に表示できる為、位置情報に基づく高度な分析も実現できます。
【サンプルコード】
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
行番号 | 詳細説明 |
---|---|
1-2行目 | 必要なライブラリをインポート |
4行目 | 感情分析を行う関数を定義 |
5-8行目 | 入力データを適切なリスト形式に変換 |
10-18行目 | 空のテキストや欠損値の処理 |
20-21行目 | TextBlobを使ってテキストの感情分析を実行 |
23-28行目 | 極性スコアに基づいて感情ラベルを決定 |
30-35行目 | 分析結果を辞書として格納 |
37行目 | 全ての結果をリストで返す |
※上記コンテンツの内容やソースコードはAIで確認・デバッグしておりますが、間違いやエラー、脆弱性などがある場合は、コメントよりご報告いただけますと幸いです。
ITやプログラミングに関するコラム
- 【Windows編】Pythonのバージョンをアップデートする方法
- 【Python】グローバル変数を別ファイルで管理・利用する方法
- バージョン確認でPythonだけ表示される原因と対処法
- 【Python】リスト(list)の括弧を外す方法
- 【Python】時間計測をミリ秒単位で実装する方法