使用Python(Numpy、Pandas等)和性能以增量和统计方式测量样本

使用Python(Numpy、Pandas等)和性能以增量和统计方式测量样本,numpy,pandas,Numpy,Pandas,假设我获取一个传入数据流(非常快),我想查看一个窗口的各种统计数据(std偏差,(比如,最后N个样本,N相当大)。用Python实现这一点最有效的方法是什么 比如说, df=ps.DataFrame(np.random.random_sample(200000000)) df2 = df.append([5]) 正在visual studio中破坏我的REPL环境 有没有一种方法可以在不发生这种情况的情况下附加到数组中?有没有一种方法可以告诉数据帧上的哪些操作是增量计算的,而不是通过对它们执行

假设我获取一个传入数据流(非常快),我想查看一个窗口的各种统计数据(std偏差,(比如,最后N个样本,N相当大)。用Python实现这一点最有效的方法是什么

比如说,

df=ps.DataFrame(np.random.random_sample(200000000))
df2 = df.append([5])
正在visual studio中破坏我的REPL环境


有没有一种方法可以在不发生这种情况的情况下附加到数组中?有没有一种方法可以告诉数据帧上的哪些操作是增量计算的,而不是通过对它们执行timeit?

我建议用numpy数组构建一个循环缓冲区

这将涉及跟踪上一次更新点的索引,并在添加新值时增加索引

import numpy as np

circular_buffer = np.zeros(200000000, dtype=np.float64)
head = 0

# stream input

    circular_buffer[head] = new_value

    if head == len(circular_buffer) - 1:
        head = 0
    else:
        head += 1
然后可以在循环缓冲区上正常计算统计信息

如果你没有足够的内存 尝试在和中实现类似的功能。这些功能比numpy(使用压缩)更有效地存储数据,并提供类似的性能。Bquery现在有均值和标准差。
注意:我是bquery的参与者

通常np和pandas在数组不增长时表现良好,通过反复追加,您会定期强制它分配新内存块并复制值,这可能解释了当您只追加一个元素时它会崩溃的原因。这篇文章对您有帮助吗: