注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
1 つ以上の FunctionNode
を最終結果に要約するための遅延クエリコンテナ。
SummarizerNode は、生または変換された time series の最終評価形態であり、FoundryTS によってこれ以上変換することはできません。SummarizerNode をデータフレームに評価し、それぞれのデータフレームライブラリを使用してトランスフォーメーションや分析を行うことが一般的です。評価には SummarizerNode.to_pandas()
または SummarizerNode.to_dataframe()
を使用します。
Copied!1 2 3 4 5 6
>>> dist_node = series.distribution() # SummarizerNode >>> dist_node.to_pandas() delta distribution_values.count distribution_values.end distribution_values.start end end_timestamp start start_timestamp 0 0.314159 1 0.314159 0.000000 3.14159 2262-01-01 0.0 1677-09-21 00:12:43.145225216 1 0.314159 1 1.256636 0.942477 3.14159 2262-01-01 0.0 1677-09-21 00:12:43.145225216 2 0.314159 1 3.141590 2.827431 3.14159 2262-01-01 0.0 1677-09-21 00:12:43.145225216
Copied!1 2 3
# dist_node = series.distribution() # SummarizerNode # dist_node.to_pandas() メソッドを使って、データをPandasデータフレームに変換します。 # delta, distribution_values.count, distribution_values.end, distribution_values.start, end, end_timestamp, start, start_timestamp というカラムを持っています。
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
>>> node = foundryts.functions.series("series1") # シリーズ1のデータを取得 >>> node.columns() ("timestamp", "value") # データのカラム(列)は「timestamp」と「value」 >>> stats_node = series.statistics(start=0, end=100, window_size=None) # シリーズの統計情報を取得。範囲は0から100、ウィンドウサイズは指定なし。 >>> stats_node.columns() ("count", "smallest_point.timestamp", "start_timestamp", "latest_point.timestamp", "mean", "earliest_point.timestamp", "largest_point.timestamp", "end_timestamp") # 統計情報のカラム(列)は以下: # "count" - データポイントの数 # "smallest_point.timestamp" - 最小の値が記録されたタイムスタンプ # "start_timestamp" - 開始時点のタイムスタンプ # "latest_point.timestamp" - 最新の値が記録されたタイムスタンプ # "mean" - 平均値 # "earliest_point.timestamp" - 最初の値が記録されたタイムスタンプ # "largest_point.timestamp" - 最大の値が記録されたタイムスタンプ # "end_timestamp" - 終了時点のタイムスタンプ
このノードおよびその子ノードで使用されるすべての time series 識別子。
このノードを pyspark.sql.DataFrame
に評価します。
PySpark DataFrame は分散データ処理と並列トランスフォームを可能にします。たとえば、多数の行を持つデータフレームを扱う際、生の time series のすべてのポイントをロードしたり、複数の SummarizerNode
や FunctionNode
の結果を一緒に評価したりする際に役立ちます。
このノードを評価し、結果を含むネストされた辞書に変換します。
SummarizerNode が複数の結果を返す場合、このメソッドは辞書のリストを返し、各リスト項目が結果に対応します。
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14
>>> series = F.points( ... (100, 0.0), (200, float("inf")), (300, 3.14159), (2147483647, 1.0), name="series" ... ) # FunctionNode >>> series.to_pandas() timestamp value 0 1970-01-01 00:00:00.000000100 0.00000 1 1970-01-01 00:00:00.000000200 inf 2 1970-01-01 00:00:00.000000300 3.14159 3 1970-01-01 00:00:02.147483647 1.00000 # F.pointsは時系列データポイントを作成する関数です。 # (timestamp, value)のペアをタプルとして渡します。 # to_pandasメソッドはこれをPandasのデータフレームに変換します。 # timestampは1970年1月1日からのナノ秒を表しています。
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
>>> dist_node = series.distribution() # SummarizerNode(データの分布を要約するノード) >>> dist_node.to_pandas() { 'start_timestamp': Timestamp('1677-09-21 00:12:43.145225216'), # データの開始タイムスタンプ 'end_timestamp': Timestamp('2262-01-01 00:00:00'), # データの終了タイムスタンプ 'start': 0.0, # データの範囲の開始値 'end': 3.1415900000000003, # データの範囲の終了値 'delta': 0.314159, # 各区間の範囲(刻み幅) 'distribution_values': [ # 各区間のデータ分布 { 'start': 0.0, # 区間の開始値 'end': 0.314159, # 区間の終了値 'count': 1 # 区間内のデータ数 }, { 'start': 0.942477, 'end': 1.256636, 'count': 1 }, { 'start': 2.8274310000000002, 'end': 3.1415900000000003, 'count': 1 } ] }
上記のコードでは、series.distribution()
メソッドを使用してデータの分布を取得し、それをPandas形式で表示しています。それぞれの区間には、開始値と終了値、そしてその区間内に含まれるデータの数が示されています。
このノードを評価し、その結果を持つPythonオブジェクトに変換します。
SummarizerNodeが複数の結果を返す場合、このメソッドはオブジェクトのリストを返し、各リスト項目は結果に対応します。
Copied!1 2 3 4 5 6 7 8 9 10
>>> dist_node = series.distribution() # SummarizerNode >>> dist_node.to_object() _CuratedDistribution(start_timestamp=Timestamp(epoch_seconds=-9223372037, offset_nanos=145224193), end_timestamp=Timestamp(epoch_seconds=9214646400, offset_nanos=0), start=0.0, end=3.1415900000000003, delta=0.314159, distribution_values=[ DistributionDataPoint(start=0.0, end=0.314159, count=1), DistributionDataPoint(start=0.942477, end=1.256636, count=1), DistributionDataPoint(start=2.8274310000000002, end=3.1415900000000003, count=1) ] )
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13
# series.distribution() メソッドを呼び出して、SummarizerNode を取得します。 # to_object() メソッドを使用して、SummarizerNode をオブジェクトに変換します。 # _CuratedDistribution オブジェクトは、以下の属性を含みます: # - start_timestamp: 開始タイムスタンプ # - end_timestamp: 終了タイムスタンプ # - start: 分布の開始値 # - end: 分布の終了値 # - delta: 分布間隔 # - distribution_values: DistributionDataPoint のリスト # - DistributionDataPoint は以下の属性を含みます: # - start: 区間の開始値 # - end: 区間の終了値 # - count: この区間に含まれるデータポイントの数
このノードを pandas.DataFrame
に評価します。
SummarizerNode の DataFrame 結果は、pandas.DataFrame
にフラット化され、単一の行(またはサマライザーが複数の結果を返す場合は要素ごとに 1 行)および結果オブジェクトのリーフレベル値ごとに 1 列になります。ネストされたキーはドットで区切られます。
Copied!1 2 3 4 5 6
>>> dist_node = series.distribution() # SummarizerNode >>> dist_node.to_pandas() delta distribution_values.count distribution_values.end distribution_values.start end end_timestamp start start_timestamp 0 0.314159 1 0.314159 0.000000 3.14159 2262-01-01 0.0 1677-09-21 00:12:43.145225216 1 0.314159 1 1.256636 0.942477 3.14159 2262-01-01 0.0 1677-09-21 00:12:43.145225216 2 0.314159 1 3.141590 2.827431 3.14159 2262-01-01 0.0 1677-09-21 00:12:43.145225216
このコードは、series
オブジェクトから分布情報を取得し、そのデータをPandas DataFrame形式で表示しています。以下は各列の説明です:
delta
: 各分布区間の幅を示しています。distribution_values.count
: 各区間内の値のカウントを示しています。distribution_values.end
: 各区間の終了値を示しています。distribution_values.start
: 各区間の開始値を示しています。end
と start
: 全体の終了値と開始値を表しており、ここではπ(3.14159)と0を示しています。end_timestamp
と start_timestamp
: タイムスタンプで終了と開始を表していますが、ここでは非常に未来(2262年)と過去(1677年)の日時を示しています。この情報は、データの分布を理解するのに役立ちます。
このノードを評価してpandas dataframeにした場合に生成されるpandas.DataFrame
の列の型をタプルで返します。
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14
>>> node = foundryts.functions.points() # foundryts.functions.points()を使用してノードを作成 >>> node.types() # ノードのデータ型を表示 (<class 'int'>, <class 'float'>) # ノードは整数型と浮動小数点型を持つ >>> stats_node = foundryts.functions.series("series1").statistics(start=0, end=100, window_size=None) # "series1"というシリーズの統計情報を取得するためのノードを作成 # 開始インデックス0から終了インデックス100までの範囲で、ウィンドウサイズは指定しない >>> stats_node.types() # 統計ノードのデータ型を表示 (<class 'int'>, <class 'pandas._libs.tslibs.timestamps.Timestamp'>, <class 'float'>, <class 'pandas._libs.tslibs.timestamps.Timestamp'>, <class 'pandas._libs.tslibs.timestamps.Timestamp'>, <class 'float'>, <class 'pandas._libs.tslibs.timestamps.Timestamp'>, <class 'float'>, <class 'float'>, <class 'pandas._libs.tslibs.timestamps.Timestamp'>, <class 'float'>, <class 'pandas._libs.tslibs.timestamps.Timestamp'>) # 統計ノードは整数、タイムスタンプ、浮動小数点型を含む