在 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 数组保存到磁盘
我有一个巨大的 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
.