让我说我接收一个输入数据流(非常快)我希望查看窗口的各种统计数据(标准偏差,(例如,最后N个样本,N非常大)。什么&# 39;用Python做最好的方法吗?
例如,
df=ps.DataFrame(np.random.random_sample(200000000))
df2 = df.append([5])
在Visual Studio中崩溃了我的REPL环境。
有没有办法在没有这种情况下附加到数组?有没有办法告诉数据帧上哪些操作是递增计算的,而不是对它们执行timeit?
答案 0 :(得分:0)
我建议用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
然后你可以在circular_buffer上正常计算统计数据。
尝试在bquery和bcolz中实施类似内容。这些比numpy(使用压缩)更有效地存储您的数据,并提供类似的性能。 Bquery现在有平均值和标准差。 注意:我是bquery的贡献者