你好啊!有没有什么方法可以更快地将大型的(理想情况下)压缩的列结构数据加载到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列的表)时,加载时间似乎要慢得多。
1条答案
按热度按时间fiei3ece1#
实际上,fastparquet支持将数据加载到numpy数组的字典中,如果你事先设置好这些数组的话。这是一个“隐藏”功能。如果你给予你想加载的数据的dtype和大小的细节。这个答案可以相应地编辑。
在结果的框架上调用.to_numpy(),这再次导致严重的延迟
这是非常令人惊讶的,它通常应该是相同基础数据的无副本视图。