【Python】Tableauと連携してできること

【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-learnTensorFlowなどの機械学習ライブラリを活用すると、予測モデルやクラスタリング分析の結果を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の連携が効果的です。GeoPandasShapelyなどの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やプログラミングに関するコラム


ITやプログラミングに関するニュース

ブログに戻る

コメントを残す

コメントは公開前に承認される必要があることにご注意ください。

コードキャンプDX人材育成研修 - IT・プログラミングを知って学べるコネクトメディア 金融業界の業務効率化を加速するニッセイアセットマネジメントの生成AI×GAS活用研修事例 - IT・プログラミングを知って学べるコネクトメディア 【製造業のDX人材育成事例】デジタル人材の即戦力化を実現する、日本ガイシ株式会社の異動者向オンボーディング研修 - ITやプログラミングを知って学べるコネクトメディア フューチャーアーキテクト株式会社が実現した新入社員向けIT研修プログラムでタスクフォース制度が主体的な学びと成長を生み出す - IT・プログラミングを知って学べるコネクトメディア コードキャンプDX人材育成研修 - IT・プログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/【IT新入社員研修】オンラインとオフラインの最適バランスを実現したFutureOneの導入事例 - IT・プログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/【新入社員研修】柔軟なハイブリッド型Java研修で実現した新卒20名の成長と成果|サークレイス株式会社 - ITやプログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/現場により近いところにデジタルを根付かせるDX基礎講座研修|株式会社ブリヂストン - ITやプログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/業務の効率化・DX推進に向けたIT人材育成への第一歩|株式会社カナエ - ITやプログラミングを知って学べるコネクトメディア 企業・法人向けのIT・プログラミング研修 - ITやプログラミングを知って学べるコネクトメディア

新着記事

対象者別で探す

子供(小学生・中学生・高校生)向け
プログラミング教室検索する

子供(小学生・中学生・高校生)がロボットやプログラミング言語を学ぶことができるオフラインからオンラインスクールを検索、比較することが可能です。

子供(小学生・中学生・高校生)
プログラミング教室検索する

ITやプログラムなどの
最新情報を検索する

日々、新しいITやプログラミング言語の情報が流れていきますが、特定の情報を時系列でニュースやコラムを確認することができます。

ITやプログラムなどの
最新情報を検索する