我想使用Pandas实时处理系列.每一秒,我都需要在现有系列中添加最新的观察结果.我的系列被分组为一个DataFrame并存储在HDF5文件中.
我现在就是这样做的:
>> existing_series = Series([7,13,97], [0,1,2])
>> updated_series = existing_series.append( Series([111], [3]) )
这是最有效的方式吗?我已经阅读了无数的帖子,但找不到任何专注于高频数据效率的帖子.
编辑:我刚看过模块搁架和泡菜.看起来他们会实现我想要做的,基本上将列表保存在磁盘上.因为我的列表很大,有没有办法不将完整列表加载到内存中,而是有效地一次添加一个值?
PyTables实际上非常擅长附加,每秒写入HDFStore都可以.您想要存储DataFrame表.然后,您可以像时尚一样在查询中选择数据,例如
store.append('df', the_latest_df)
store.append('df', the_latest_df)
....
store.select('df', [ 'index>12:00:01' ])
如果这一切都来自同一个过程,那么这将很有效.如果你有一个编写器进程,然后另一个进程正在读取,这有点棘手(但根据你正在做的事情将正常工作).
另一种选择是使用消息传递从一个进程传输到另一个进程(然后附加到内存中),这避免了序列化问题.
版权声明:本文为weixin_39922004原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。