注意:以下翻译的准确性尚未经过验证。这是使用 AIP ↗ 从原始英文文本进行的机器翻译。

foundryts.functions.statistics

foundryts.functions.statistics(start=None, end=None, window=None, **kwargs)

返回一个函数,该函数将单个序列划分为窗口并计算每个窗口的统计数据。

使用 window 参数将序列划分为窗口。每个窗口包含 数据框架模式 中列出的统计数据。统计数据是在滚动窗口上计算的,这些窗口可以基于周期性(每个窗口的宽度)或固定数量的窗口创建,其中宽度使用 round(总点数/桶数) 计算。所用的滚动窗口选项由 window 或 window_count 参数决定。

  • 参数:
    • start (Union [int , datetime , str ] , 非必填) – 时间戳(包括在内),用于从提供的序列中开始划分窗口。(默认是整个序列)

    • end (Union [int , datetime , str ] , 非必填) – 时间戳(包括在内),用于结束从提供的序列中划分窗口。(默认是整个序列)

    • window (Union [int , datetime , str ] , 非必填) –

      时间增量,即每个窗口的宽度,每个窗口的大小用于将序列划分为多个窗口。(默认是整个序列)

    • **kwargs – 用于确定窗口行为和输出类型的标志。

  • 关键字参数:
    • include_std_dev (bool , False) – 如果设置为 True,输出将包括标准偏差。
    • window_count (int , 非必填) – 要计算统计数据的窗口数量(而不是每个窗口的大小)。
  • 返回: 返回一个函数,该函数接受单个序列作为输入,并将其划分为窗口,每个窗口提供每个窗口的统计数据。
  • 返回类型: (FunctionNode) -> SummarizerNode

数据框架模式

列名类型描述
countint输入序列窗口中的数据点数量。
earliest_point.timestampdatetime输入序列窗口中第一个数据点的时间戳。
earliest_point.valuefloat输入序列窗口中第一个数据点的值。
end_timestampdatetime最后一个数据点的时间戳
largest_point.timestampdatetime输入序列窗口中具有最大值的数据点的时间戳。
largest_point.valuefloat输入序列窗口中的最大值。
latest_point.timestampdatetime输入序列窗口中最近的数据点的时间戳。
latest_point.valuefloat输入序列窗口中最近的数据点的值。
meanfloat输入序列窗口中所有数据点的平均值。
smallest_point.timestampdatetime输入序列窗口中具有最小值的数据点的时间戳。
smallest_point.valuefloat输入序列窗口中的最小值。
start_timestampdatetime第一个数据点的时间戳

注释

此函数仅适用于数字序列。

将来,include_std_dev 参数将被弃用,因为此功能将成为默认设置。

window_count 只能与 include_std_dev 一起使用,这将覆盖 window。如果在没有 include_std_dev 的情况下传递,window_count 将被忽略。

示例

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 >>> series = F.points( ... (1, 8.0), ... (101, 4.0), ... (200, 2.0), ... (201, 1.0), ... (299, 35.0), ... (300, 16.0), ... (350, 32.0), ... (1000, 64.0), ... ) # 这段代码创建了一个时间序列数据集,其中包含了一组时间戳和对应的值。 # 每个元组代表一个数据点,第一个元素是时间戳(以某种单位表示,如纳秒),第二个元素是对应的值。 timestamp value 0 1970-01-01 00:00:00.000000001 8.0 1 1970-01-01 00:00:00.000000101 4.0 2 1970-01-01 00:00:00.000000200 2.0 3 1970-01-01 00:00:00.000000201 1.0 4 1970-01-01 00:00:00.000000299 35.0 5 1970-01-01 00:00:00.000000300 16.0 6 1970-01-01 00:00:00.000000350 32.0 7 1970-01-01 00:00:00.000001000 64.0 # 这里显示了时间序列数据集的表格表示形式,每行代表一个数据点。 # 'timestamp' 列表示时间戳,以自1970-01-01 00:00:00以来的纳秒数来表示。 # 'value' 列表示对应的数值。
Copied!
1 2 3 4 5 6 7 8 >>> stats = F.statistics(window="100ns")(series) # 使用基于时间的窗口进行统计,窗口大小为100纳秒 >>> stats.to_pandas() count earliest_point.timestamp earliest_point.value end_timestamp largest_point.timestamp largest_point.value latest_point.timestamp latest_point.value mean smallest_point.timestamp smallest_point.value start_timestamp 0 1 1970-01-01 00:00:00.000000001 8.0 1970-01-01 00:00:00.000000100 1970-01-01 00:00:00.000000001 8.0 1970-01-01 00:00:00.000000001 8.0 8.000000 1970-01-01 00:00:00.000000001 8.0 1970-01-01 00:00:00.000000000 1 1 1970-01-01 00:00:00.000000101 4.0 1970-01-01 00:00:00.000000200 1970-01-01 00:00:00.000000101 4.0 1970-01-01 00:00:00.000000101 4.0 4.000000 1970-01-01 00:00:00.000000101 4.0 1970-01-01 00:00:00.000000100 2 3 1970-01-01 00:00:00.000000200 2.0 1970-01-01 00:00:00.000000300 1970-01-01 00:00:00.000000299 35.0 1970-01-01 00:00:00.000000299 35.0 12.666667 1970-01-01 00:00:00.000000201 1.0 1970-01-01 00:00:00.000000200 3 2 1970-01-01 00:00:00.000000300 16.0 1970-01-01 00:00:00.000000400 1970-01-01 00:00:00.000000350 32.0 1970-01-01 00:00:00.000000350 32.0 24.000000 1970-01-01 00:00:00.000000300 16.0 1970-01-01 00:00:00.000000300 4 1 1970-01-01 00:00:00.000001000 64.0 1970-01-01 00:00:00.000001100 1970-01-01 00:00:00.000001000 64.0 1970-01-01 00:00:00.000001000 64.0 64.000000 1970-01-01 00:00:00.000001000 64.0 1970-01-01 00:00:00.000001000

这个代码片段使用了一个时间窗口为100纳秒的统计函数F.statistics(window="100ns")来分析时间序列数据series,并将结果转换为Pandas DataFrame格式。表中的每一行代表一个时间窗口内的统计数据,包括数据点的数量、最早和最晚时间戳及其对应的值、最大和最小值及其时间戳、平均值等信息。

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 >>> stats_with_std_dev = F.statistics(window="100ns", include_std_dev=True)(series) # 计算一段时间窗口内的统计信息,并包含标准差(standard deviation) >>> stats_with_std_dev.to_pandas() # 将计算结果转换为 Pandas DataFrame 格式 count earliest_point.timestamp earliest_point.value end_timestamp largest_point.timestamp largest_point.value latest_point.timestamp latest_point.value mean smallest_point.timestamp smallest_point.value standard_deviation start_timestamp 0 1 1970-01-01 00:00:00.000000001 8.0 1970-01-01 00:00:00.000000100 1970-01-01 00:00:00.000000001 8.0 1970-01-01 00:00:00.000000001 8.0 8.000000 1970-01-01 00:00:00.000000001 8.0 0.000000 1970-01-01 00:00:00.000000000 # 第一行数据:统计计数为1,时间窗口开始和结束时间以及最大、最小、平均值等信息。 1 1 1970-01-01 00:00:00.000000101 4.0 1970-01-01 00:00:00.000000200 1970-01-01 00:00:00.000000101 4.0 1970-01-01 00:00:00.000000101 4.0 4.000000 1970-01-01 00:00:00.000000101 4.0 0.000000 1970-01-01 00:00:00.000000100 # 第二行数据:统计计数为1,时间窗口开始和结束时间以及最大、最小、平均值等信息。 2 3 1970-01-01 00:00:00.000000200 2.0 1970-01-01 00:00:00.000000300 1970-01-01 00:00:00.000000299 35.0 1970-01-01 00:00:00.000000299 35.0 12.666667 1970-01-01 00:00:00.000000201 1.0 15.797327 1970-01-01 00:00:00.000000200 # 第三行数据:统计计数为3,时间窗口包含多个数据点,计算了平均值和标准差。 3 2 1970-01-01 00:00:00.000000300 16.0 1970-01-01 00:00:00.000000400 1970-01-01 00:00:00.000000350 32.0 1970-01-01 00:00:00.000000350 32.0 24.000000 1970-01-01 00:00:00.000000300 16.0 8.000000 1970-01-01 00:00:00.000000300 # 第四行数据:统计计数为2,记录了时间窗口内的统计信息。 4 1 1970-01-01 00:00:00.000001000 64.0 1970-01-01 00:00:00.000001100 1970-01-01 00:00:00.000001000 64.0 1970-01-01 00:00:00.000001000 64.0 64.000000 1970-01-01 00:00:00.000001000 64.0 0.000000 1970-01-01 00:00:00.000001000 # 第五行数据:统计计数为1,单一数据点的最大、最小、平均值都是相同的。
Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 >>> stats_fixed_window_count = F.statistics(include_std_dev=True, window_count=3)(series) # 使用固定窗口大小为3进行统计分析,并包含标准差 >>> stats_fixed_window_count.to_pandas() # 将统计结果转换为Pandas数据框格式 count earliest_point.timestamp earliest_point.value end_timestamp largest_point.timestamp largest_point.value latest_point.timestamp latest_point.value mean smallest_point.timestamp smallest_point.value standard_deviation start_timestamp # count: 数据点个数 # earliest_point.timestamp: 最早的数据点时间戳 # earliest_point.value: 最早的数据点值 # end_timestamp: 窗口结束时间戳 # largest_point.timestamp: 最大值的数据点时间戳 # largest_point.value: 最大值 # latest_point.timestamp: 最晚的数据点时间戳 # latest_point.value: 最晚的数据点值 # mean: 平均值 # smallest_point.timestamp: 最小值的数据点时间戳 # smallest_point.value: 最小值 # standard_deviation: 标准差 # start_timestamp: 窗口开始时间戳 0 6 1970-01-01 00:00:00.000000001 8.0 1970-01-01 00:00:00.000000335 1970-01-01 00:00:00.000000299 35.0 1970-01-01 00:00:00.000000300 16.0 11.0 1970-01-01 00:00:00.000000201 1.0 11.83216 1970-01-01 00:00:00.000000001 1 1 1970-01-01 00:00:00.000000350 32.0 1970-01-01 00:00:00.000000669 1970-01-01 00:00:00.000000350 32.0 1970-01-01 00:00:00.000000350 32.0 32.0 1970-01-01 00:00:00.000000350 32.0 0.00000 1970-01-01 00:00:00.000000335 2 1 1970-01-01 00:00:00.000001000 64.0 1970-01-01 00:00:00.000001003 1970-01-01 00:00:00.000001000 64.0 1970-01-01 00:00:00.000001000 64.0 64.0 1970-01-01 00:00:00.000001000 64.0 0.00000 1970-01-01 00:00:00.000000669