代码之家  ›  专栏  ›  技术社区  ›  PV8

Python的硬件问题

  •  0
  • PV8  · 技术社区  · 6 年前

    我正在使用python中的一个相对较大的csv文件。我正在使用pandas read_csv函数导入它。数据位于工作时的共享文件夹中,大约25GB。

    我有2x8GB内存和一个英特尔酷睿i5处理器,使用的是juypter笔记本电脑。加载文件时,RAM监视将达到100%。它保持在100%或96%几分钟,然后我的电脑时钟停止,我的屏幕被冻结。即使我等了两个小时,我的电脑也不能再用了,所以我必须重新启动。

    我的问题是: 我需要分割数据吗?有帮助吗?或者是我的笔记本电脑的一般性能问题?

    感谢advanced,这是我第一次使用这么大的数据集(我仍然认为25GB不算多)

    3 回复  |  直到 6 年前
        1
  •  3
  •   Dhnesh Dhingra    6 年前

    对于大文件,pandas可以分块读取。

    chunksize = 10 ** 6
    for chunk in pd.read_csv(filename, chunksize=chunksize):
        process(chunk)
    
        2
  •  3
  •   Jonathan R    6 年前

    看看 documentation 属于 read_csv . 有一个参数叫做 nrows . 它指出:

    nrows:int,默认为None

    要读取的文件行数。用于读取大文件的片段

    一次只能读取几行代码,这样就不会将整个文件加载到RAM中。

    顺便说一下:使用类似于:

    with open(my_file) as f:
        for line in f:
            ...
    

    一次只能将一行加载到内存中。

        3
  •  1
  •   Telmo Trooper    6 年前

    您可能正在加载RAM中的所有数据,从而分配所有可用内存,迫使系统依赖交换内存(将临时数据写入磁盘,这要慢得多)。

    如果将数据分割成适合内存的块,就可以解决这个问题。可能每个1 GB?