将列结构的时间序列数据更快地加载到NumPy数组中

lawou6xi  于 4个月前  发布在  其他
关注(0)|答案(1)|浏览(67)

你好啊!有没有什么方法可以更快地将大型的(理想情况下)压缩的列结构数据加载到Python中的NumPy数组中?考虑到Pandas,Apache Parquet/Feather和HDF 5等常见解决方案,我正在努力寻找适合我的(时间序列)问题的方法。
正如预期的那样,将我的数据表示为NumPy数组,到目前为止,搜索问题(如二进制搜索)的执行时间最快,当应用于Pandas嵌套框架时,性能明显优于相同的分析。另一方面,当我尝试将数据存储为npz文件时,例如,与使用.parquet中的fasterparquet引擎和列存储将相同的数据加载到DataFrame中相比,直接将npz加载到NumPy数组中需要更长的时间。然而,需要我在生成的嵌套框架上调用.to_numpy(),这再次导致访问嵌套框架的底层numpy表示时出现严重延迟。
如上所述,我尝试的一种替代方法是以一种格式存储数据,这种格式可以在没有任何中间转换步骤的情况下加载到numpy数组中。然而,与存储为.parquet文件的相同数据相比,当数据存储为.npz文件(具有> 10 M记录和> 10列的表)时,加载时间似乎要慢得多。

fiei3ece

fiei3ece1#

实际上,fastparquet支持将数据加载到numpy数组的字典中,如果你事先设置好这些数组的话。这是一个“隐藏”功能。如果你给予你想加载的数据的dtype和大小的细节。这个答案可以相应地编辑。
在结果的框架上调用.to_numpy(),这再次导致严重的延迟
这是非常令人惊讶的,它通常应该是相同基础数据的无副本视图。

相关问题