在python中读取具有大量列的文件

时间:2017-06-29 21:16:51

标签: python file-handling

我有一个巨大的文件csv文件,大约有400万列和大约300行。文件大小约为4.3G。我想读取这个文件并对数据运行一些机器学习算法。

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

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

3 个答案:

答案 0 :(得分:3)

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

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

如果数据丢失,np.genfromtext可能会有效。如果这些都不能满足您的需求并且您有足够的RAM来暂时保存数据的副本,那么您可以首先构建一个列表的Python列表,每行使用readline和str.split。然后将其传递给Pandas或numpy,假设您打算如何操作数据。然后,您可以将其以一种格式保存到磁盘,以便以后更容易获取。 hdf5已经提到并且是一个不错的选择。您还可以使用numpy.savez或我喜欢的快速bloscpack.(un)pack_ndarray_file将numpy数组保存到磁盘。

答案 1 :(得分:2)

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

答案 2 :(得分:-2)

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