今天来测试python的大数据集的vaex库。vaex采取内存映射,不占用内存,适合大数据处理,可以在百亿级数据集上进行秒级的统计分析 。
阿里云上下载了数据集“新闻文本分类数据集”来进行三个测试。
1、pandas读取csv文件
先使用pandas来测试,打开train_set.csv数据集需要10.8秒,同时任务管理器上内存已经显示增加到快1G 。
![](https://img.haomeiwen.com/i24447700/550a56398a818e96.png)
2、vaex直接读取CSV文件
直接使用vaex读取整个CSV文件,这样操作其实和pandas没啥区别,时间和内存使用量几乎类似。vaex只能把csv只能读到内存中。
![](https://img.haomeiwen.com/i24447700/93f8f6b4beb878e6.png)
3、vaex将CSV转换为HDF5后读取
读取原始csv文件并存储为vaex的hdf5的数据结构,hdf5可以惰性读取。在转换时内存消耗差不多也是一个G左右,时间需要一分钟。
![](https://img.haomeiwen.com/i24447700/bcb55a5324f3c20a.png)
如果数据量较大,可以指定chunk_size参数指定要读取的单个块的大小。比如:vaex.from_csv("train_set.csv",convert=True,chunk_size=10_000) ,表示生成的每个临时文件包含1万条数据,不过最终这些临时文件都会被删除只保留一个经过合并后最终的HDF5文件。chunk_size参数指定后,转换的时间会增加,但是对内存是十分友好的。
![](https://img.haomeiwen.com/i24447700/6e8933054c620011.png)
转换后,我们再次打开这个新生成的train_set.csv.hdf5文件,消耗的时间非常短,内存消耗只有126M。
![](https://img.haomeiwen.com/i24447700/ef25f6891f752874.png)
网友评论