python-2.7 - 用于实时分析的正确 Python 数据结构?

标签 python-2.7 dictionary pandas time-series real-time

社区,

目标:我正在运行一个 Pi 项目(即 Python),该项目与 Arduino 通信以每秒一次从称重传感器获取数据。我应该使用什么数据结构在 Python 中记录(并进行实时分析)这些数据?

我希望能够做这样的事情:

  • 对数据进行切片以获取最后记录的数据点的值。
  • 切片数据以获得最后 n 秒的数据点的平均值。
  • 对最后 n 个数据点执行回归以获得 g/s。
  • 从日志中删除超过 n 秒的数据点。

  • 当前尝试:

    字典:我在字典中附加了一个带有舍入时间的新键(见下文),但这使得切片和分析变得困难。
    log = {}
    
    def log_data():
        log[round(time.time(), 4)] = read_data()
    

    Pandas DataFrame:这是我想要的,因为它使时间序列切片和分析变得容易,但这( How to handle incoming real time data with python pandas )似乎说这是一个坏主意。我无法遵循他们的解决方案(即存储在字典中,并且 df.append() - 每隔几秒钟批量处理一次),因为我希望我的费率计算(回归)是实时的。

    这个问题( ECG Data Analysis on a real-time signal in Python )似乎和我有同样的问题,但没有真正的解决方案。

    目标:

    那么在 Python 中处理和分析实时时间序列数据的正确方法是什么?这似乎是每个人都需要做的事情,所以我想必须为此预先构建功能?

    谢谢,

    迈克尔

    最佳答案

    首先,我会质疑两个假设:

  • 您在帖子中提到数据每秒传入一次。如果您可以依赖它,则根本不需要时间戳——查找最后 N 个数据点与查找最后 N 秒的数据点完全相同。
  • 您有一个限制,即您的汇总数据必须绝对 100% 实时。这可能会使生活变得更加复杂——有可能完全放松吗?

  • 无论如何,这是使用列表的一种非常幼稚的方法。它满足您的需求。性能可能会成为问题,具体取决于您需要存储多少个先前的数据点。

    另外,您可能没有想到这一点,但您是否需要过去数据的完整记录?或者你可以直接丢东西吗?
    data = []
    
    new_observation = (timestamp, value)
    
    # new data comes in
    data.append(new_observation)
    
    
    # Slice the data to get the value of the last logged datapoint.
    data[-1]
    
    # Slice the data to get the mean of the datapoints for the last n seconds.
    mean(map(lambda x: x[1], filter(lambda o: current_time - o[0] < n, data)))
    
    # Perform a regression on the last n data points to get g/s.
    regression_function(data[-n:])
    
    # Remove from the log data points older than n seconds.
    data = filter(lambda o: current_time - o[0] < n, data)
    

    关于python-2.7 - 用于实时分析的正确 Python 数据结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37867011/

    相关文章:

    python - 计算 Python 列表中某个模式出现的次数

    java - 我在 Netbeans 中的 java 项目变得很慢

    python - 在 pandas 中使用 matplotlib 绘制散点图时如何将标记与线连接起来

    python - 通过比较多列来组合 pandas DataFrame 中的行

    python - 创建一个新列,该新列是满足两个条件的多个其他列中的日期数之和

    python - 随机森林回归的残差(Python)

    python - 在 Maya python 中将重复列表 "L"重命名为 "R"

    python - 如何使用 python 从文件夹中读取 xml 文件?

    java - 遍历Map中的传递键

    dictionary - 同义词词典