代码之家  ›  专栏  ›  技术社区  ›  Mayank Jain

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

  •  1
  • Mayank Jain  · 技术社区  · 9 年前

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

    我试着通过 pandas read_csv 在python中,但即使是读取一行也需要很长时间(我怀疑是因为有大量列)。我选择了其他几个选项,比如 numpy fromfile

    有人能推荐一些方法来加载python中包含许多列的文件吗?

    3 回复  |  直到 9 年前
        1
  •  3
  •   Joseph Sheedy    9 年前

    熊猫/numpy应该能够处理如此大量的数据,没有问题。我希望那台机器上至少有8GB的RAM。要使用Numpy导入CSV文件,请尝试以下操作

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

    如果缺少数据, np.genfromtext 可能会起作用。如果这些都不能满足您的需要,并且您有足够的RAM来暂时保存数据的副本,那么您可以首先使用readline和str.split构建一个Python列表列表,每行一个。然后将其传递给Pandas或numpy,假设您打算这样操作数据。然后,您可以将其保存到磁盘,以便于以后的摄取。hdf5已经提到,是一个很好的选择。您还可以使用将numpy阵列保存到磁盘 numpy.savez bloscpack.(un)pack_ndarray_file .

        2
  •  2
  •   Johannes    9 年前

    csv存储大型数据集的效率非常低。您应该将csv文件转换为更合适的格式。试试hdf5(h5py.org或pytables.org),它速度非常快,允许您在不将数据集完全加载到内存的情况下读取数据集的部分内容。

        3
  •  -2
  •   N Shumway    9 年前