在本地 CSV 数据簇中查找最高值/最低值

问题描述 投票:0回答:1

我目前正在解决的挑战如下:

我希望在每分钟更新的列表中查找 CSV 数据中的模式。我需要找到特定的模式,例如

EX(从左到右):(100-125-150-120-135-160-180-145-165-185-200-190-180)

数据从 100 变为 125,再变为 150。因为后来变为 120,所以我需要将 150 记录为该本地集群中的最高值,并存档该数字以供以后使用。因为在 120 之后,它变为 135,然后是 160,然后是 180,最后降至 145,因此我想再次将 180 记录为该特定集群的最高值,同时保留之前的 150。如果重复此过程,它也会记录 200,因为这是在值再次低于最高值之前本地集群中的最高数字

我不确定要使用的精确方法,所以我还没有达到编码的目的

我通过搜索找到的技术总结包括机器学习模型,但我的理解是,在如此简单的过程中不需要机器学习。纯逻辑应该合适

csv design-patterns sequential
1个回答
0
投票

是的,你是对的,机器学习可能会大材小用,对于这种模式,一个带有 if 语句的简单 for 循环就足够了。 下面是所有这些的伪代码,也是 python 语言的实现(逻辑与任何其他语言几乎相同)

伪代码:

Initialize variables:
highs = empty list
current_value = None
potential_high = None

我们迭代输入数据中的每个值。 对于第一个值,我们初始化 current_value 和 Potential_high。 假设所有值都包含在数据内(可以是我们的 csv 文件)

对于数据中的每个值:

        IF current_value is None: 
            # First value in the data 
            Set current_value = value
            Set potential_high = value

如果当前值大于电位高点,我们就找到了新的电位高点。

  ELSE IF value > potential_high:
                 # Value is increasing, update the potential high
                 Set potential_high = value

如果当前值小于或等于势能高,我们遇到了下降,因此我们记录势能高并启动一个新集群。

  ELSE IF value <= potential_high:
                # Value is decreasing, check for a unique local high
                IF potential_high NOT IN highs: 
                     Append potential_high to the highs list
                 Reset potential_high = current_value

更新位置

 Set current_value = value

下面是您提供的相同数据的 python 实现,即 [100, 125, 150, 120, 135, 160, 180, 145, 165, 185, 200, 190, 180],用逗号“,”或 csv 分隔

highs = []
current_value = None
potential_high = None
data = [100, 125, 150, 120, 135, 160, 180, 145, 165, 185, 200, 190, 180]


for value in data:
  if current_value is None:
    # Initialize on the first value
    current_value = value
    potential_high = value
  elif value > potential_high:
    # Update potential high if value greater
    potential_high = value
  elif value <= potential_high and potential_high not in highs:
    # Add potential high to highs if it's unique and less than or equal to current high
    highs.append(potential_high)
  # Update current value for next iteration
  current_value = value


print("Unique Local Highs:", highs)

输出:独特的局部高点:[150, 180, 200]

希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.