注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

FoundryTS で時系列データを操作する

FoundryTS は、時系列データに対してクエリを実行する Python ライブラリで、 Code RepositoriesCode WorkbooksCode Workspaces と統合されています。

詳細は 時系列のドキュメンテーション をご覧ください。

Code Repositories クイックスタートガイド

まず始めに、すでに Python コードリポジトリのセットアップ を完了していることを確認してください。

ライブラリ パネルを使用して、foundrytstransforms-timeseriestransforms-objects のライブラリをリポジトリに追加します。

ライブラリパネル

次に、以下の手順に従って、クエリ対象のオブジェクトタイプをリポジトリにインポートし、プロジェクト参照を更新します:

  1. リポジトリの 設定 タブに移動します。
  2. オントロジーを選択します。
  3. オブジェクトタイプを追加します。

株価データの取り扱い

この例では、Ticker name プロパティを持つ Stock series オブジェクトタイプから始めます。目的は、Technology セクターのすべてのシリーズを見つけて、その時間範囲を計算することです。

まず、変換の入力と出力を定義します。Stock series オブジェクトタイプをオブジェクト入力として宣言し、時間シリーズ同期を時間シリーズ入力として宣言します。

Copied!
1 2 3 4 5 6 7 8 9 @transform( output=Output("/Users/jdoe/foundryts-test-energy-sector"), # 出力先のディレクトリを指定 ts=TimeSeriesInput('ri.time-series-catalog.main.sync.6bdbda27-29...'), # 時系列データの入力を指定 objects=ObjectInput( object_type_rid='ri.ontology.main.object-type.4168ed49-00...', # オブジェクトタイプのリソースIDを指定 ontology_rid='ri.ontology.main.ontology.00000000-00...', # オントロジーのリソースIDを指定 ontology_branch_rid='ri.ontology.main.branch.00000000-00...' # オントロジーのブランチのリソースIDを指定 ) )

ここで、変換関数を定義し、FoundryTS のインスタンスを初期化します。この関数は、オブジェクトタイプ、時間系列同期、および出力を引数として取ることに注意してください。

def compute(ctx, ts, objects, output):
    # FoundryTS()関数を用いて新たな時間系列オブジェクトを作成します。
    fts = FoundryTS()

次に、Technology セクターの Stock series オブジェクトを検索します。検索結果の各シリーズを、その時間範囲(最も早い時点と最も遅い時点のタイムスタンプ)にマップします。

    # エネルギーセクターに関連する時系列データを検索するコード
    search_result = fts.search.series(
        (ontology('sector') == 'energy'),  # エネルギーセクターに関連するデータを検索条件に設定
        object_types=['timeseries-demo-stock-series']  # 時系列データのタイプを指定
    ).map(F.time_extent())  # 検索結果の各時系列データの時間範囲を取得

最後に、データフレームを出力データセットに書き込みます。

    df = search_result.to_dataframe()  # search_resultをデータフレームに変換します
    output.write_dataframe(df)  # データフレームを出力します

すべてを組み合わせると、完成した変換は次のようになります。

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 from transforms.api import transform, Output from transforms.timeseries import TimeSeriesInput from foundryts import FoundryTS from foundryts.search import ontology import foundryts.functions as F from transforms.objects import ObjectInput @transform( output=Output("/Users/jdoe/foundryts-test-energy-sector"), # 出力先のパスを指定します ts=TimeSeriesInput('ri.time-series-catalog.main.sync.6bdbda27-29...'), # 時系列データの入力を指定します objects=ObjectInput( object_type_rid='ri.ontology.main.object-type.4168ed49-00...', # オブジェクトのタイプを指定します ontology_rid='ri.ontology.main.ontology.00000000-00...', # オントロジーを指定します ontology_branch_rid='ri.ontology.main.branch.00000000-00...' # オントロジーのブランチを指定します ) ) def compute(ctx, ts, objects, output): fts = FoundryTS() # FoundryTSオブジェクトを作成します # 'sector'が'energy'である時系列データを検索し、その時間範囲をマッピングします search_result = fts.search.series( (ontology('sector') == 'energy'), object_types=['timeseries-demo-stock-series'] ).map(F.time_extent()) df = search_result.to_dataframe() # 検索結果をデータフレームに変換します output.write_dataframe(df) # データフレームを出力します

これが出力データセットの見た目です。

Dataframe Output