我有一个巨大的文件csv文件,大约有400万列和大约300行。文件大小约为4.3G。我想读取这个文件并对数据运行一些机器学习算法。
我尝试在python中通过pandas read_csv
读取文件,但是读取单行需要很长时间(我怀疑是由于列数很多)。我检查了一些其他选项,如numpy fromfile
,但似乎没有任何工作。
有人可以建议一些方法来加载python中有很多列的文件吗?
答案 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年。