在 python 中读取包含大量列的文件

Reading file with huge number of columns in python

我有一个巨大的 csv 文件,其中包含大约 400 万列和大约 300 行。文件大小约为4.3G。我想阅读此文件和 运行 一些关于数据的机器学习算法。

我尝试通过 pandas read_csv 在 python 中读取文件,但即使读取一行也需要很长时间(我怀疑是由于列数过多)。我检查了其他几个选项,如 numpy fromfile,但似乎没有任何效果。

有人可以建议一些方法来加载 python 中包含许多列的文件吗?

根据 this answer,pandas(您已经尝试过)是 Python 中读取 CSV 最快的库,或者至少是在 2014 年。

csv 存储大型数据集的效率非常低。您应该将 csv 文件转换为更适合的格式。尝试 hdf5(h5py.org 或 pytables.org),它非常快并且允许您读取部分数据集而无需将其完全加载到内存中。

Pandas/numpy 应该能够处理该数据量没问题。我希望你那台机器上至少有 8GB 的​​内存。要使用 Numpy 导入 CSV 文件,请尝试

data = np.loadtxt('test.csv', dtype=np.uint8, delimiter=',')

如果缺少数据,np.genfromtext 可能会起作用。如果其中 none 个满足您的需求并且您有足够的 RAM 临时保存数据副本,您可以首先构建一个 Python 列表列表,使用 readline 和 str.split 每行一个.然后将其传递给 Pandas 或 numpy,假设这就是您打算对数据进行操作的方式。然后,您可以将其以一种格式保存到磁盘,以便以后更容易摄取。 hdf5 已经提到过,是一个不错的选择。您还可以使用 numpy.savez 或我最喜欢的快速 bloscpack.(un)pack_ndarray_file.

将 numpy 数组保存到磁盘