今天来测试python的大数据集的vaex库。vaex采取内存映射,不占用内存,适合大数据处理,可以在百亿级数据集上进行秒级的统计分析 。
阿里云上下载了数据集“新闻文本分类数据集”来进行三个测试。
1、pandas读取csv文件
先使用pandas来测试,打开train_set.csv数据集需要10.8秒,同时任务管理器上内存已经显示增加到快1G 。

2、vaex直接读取CSV文件
直接使用vaex读取整个CSV文件,这样操作其实和pandas没啥区别,时间和内存使用量几乎类似。vaex只能把csv只能读到内存中。

3、vaex将CSV转换为HDF5后读取
读取原始csv文件并存储为vaex的hdf5的数据结构,hdf5可以惰性读取。在转换时内存消耗差不多也是一个G左右,时间需要一分钟。

如果数据量较大,可以指定chunk_size参数指定要读取的单个块的大小。比如:vaex.from_csv("train_set.csv",convert=True,chunk_size=10_000) ,表示生成的每个临时文件包含1万条数据,不过最终这些临时文件都会被删除只保留一个经过合并后最终的HDF5文件。chunk_size参数指定后,转换的时间会增加,但是对内存是十分友好的。

转换后,我们再次打开这个新生成的train_set.csv.hdf5文件,消耗的时间非常短,内存消耗只有126M。

网友评论