2021/04/27

Python連携

選択データのみ縦変換

このコンテンツでは、選択したデータを縦変換する方法について説明していきます。
なお、本コンテンツで利用したバージョンはSpotfire10.10です。ご利用環境によって、一部画面構成が異なる可能性がありますので、ご了承ください。

選択データのみ縦変換

次のテーブルのように、時系列項目がカラムとしてまとめられているデータはよくあります。
人が読むにはわかりやすいですが、コンピュータに制御させる場合は色々問題が生じる場合があります。BIにおいても、期待する可視化を実現できない場合があります。

そのような場合、次のテーブルのように、データを縦変換することにより、解決する場合があります。

データの縦変換

別ページで紹介しているピボットの解除(データの縦変換)は、データテーブルを一括で縦変換するものです。

大量データを扱う場合、必要なデータだけ縦変換する方がピボットの解除よりも時間とリソースがかかりません。

選択データのみ縦変換)ではTERRを使った方法をご紹介していますが、今回はPythonを使って必要なデータだけ縦変換する方法をご紹介していきます。

Pythonスクリプト

メニュー内の「ツール」から「データ関数を登録」を選択します。

「データ関数の登録」ダイアログでは以下を設定してください。

  • 名前:任意の名前
  • タイプ:Pythonスクリプト
  • スクリプト:以下のコードを入力
import pandas as pd
import numpy as np

indata2 = indata.set_index('Name')
df = indata2.transpose().unstack(level=0)
outdata = pd.DataFrame(df).reset_index().rename(columns = {"level_0": "Name","level_1": "variable", 0: "value"})

indataを入力とし、縦変換したデータをoutdataとして受け取るというスクリプトができました。

パラメータの入力

入力パラメーターとしてindataを定義します。「パラメータの入力」タブに移動し、「追加」をクリックします。
「入力パラメータ」ダイアログでは、以下を設定し「OK」をクリックします。

  • 入力パラメータ名:indata
  • タイプ:テーブル
  • 使用可能なデータ型:すべて

出力パラメータ

出力用にoutdataを定義します。「出力パラメータ」タブに移動し、「追加」をクリックします。
「出力パラメータ」ダイアログでは、以下を設定し「OK」をクリックします。

  • 出力パラメータ名:outdata
  • タイプ:テーブル

実行

「データ関数の登録」ダイアログに戻り、右上の「実行」ボタンをクリックします。

「パラメータの編集」ダイアログが開きます。
入力タブでは、実行時のパラメータとデータの割り当てを以下のように設定します。

  • 入力ハンドラ:「カラム」の「検索式」を選択し「*」を入力
  • 制限の基準:「マークされたロー」にチェック

これにより、カラムが可変になった場合でも対応でき、マークした範囲のデータを変換することができます。

出力タブでは、outdataをSpotfire側で扱う方法を以下のように設定します。

  • 出力ハンドラ:「データテーブル」の「新しいデータテーブルの作成」を選択

「OK」を押すと実行されます。

動作確認

確認のため、indataの棒グラフとoutdataのテーブルを作成します。

元データであるindataで作成した棒グラフのAを選択すると、outdataにはAを縦変換した8行が作成されます。

棒グラフのBを選択するとoutdataが更新されます。

また、棒グラフの複数セグメントを選択した場合でも、適時outdataが更新されます。

このように、必要な箇所だけ縦変換できると大量データを扱う際に便利です。

【Python連携】記事一覧に戻る
全記事一覧に戻る