我一直在尝试训练神经网络,但是当我用 Pandas 加载数据帧时,我的计算机总是耗尽 RAM 内存。它是一个 .csv 文件,大小为 7+ GB。
我想尝试一些原始批处理,但是为了进行一次热编码,我需要找到所有唯一值的数量,如果不先将数据加载到数据帧中,我就无法做到这一点。
是否有任何其他工具可用于尝试将文件加载到数据框中?Pyspark 是否也有开始崩溃的限制?我知道它能够将操作分解为多个阶段,这对 RAM 管理或执行有帮助吗?
我一直在尝试训练神经网络,但是当我用 Pandas 加载数据帧时,我的计算机总是耗尽 RAM 内存。它是一个 .csv 文件,大小为 7+ GB。
我想尝试一些原始批处理,但是为了进行一次热编码,我需要找到所有唯一值的数量,如果不先将数据加载到数据帧中,我就无法做到这一点。
是否有任何其他工具可用于尝试将文件加载到数据框中?Pyspark 是否也有开始崩溃的限制?我知道它能够将操作分解为多个阶段,这对 RAM 管理或执行有帮助吗?
正如 pandas 的作者多次指出的那样,使用 pandas 进行分析的理想内存大小大约是您提供的数据负载的 5-10 倍。
话虽这么说,如果您能够负担得起加载数据是用于预处理的块并仅转储所需的列,我建议您pandas.read_table选择分段加载数据(检查选项chunks)。
pyspark正如你提到的那样可能很好。但是有dask一个是围绕python堆栈pandas和numpy分布式工作负载构建的,它支持pandas.DataFrame和numpy.array. 但我从未关注任何成功在生产中使用它的人(或者至少提到他们已经使用过它)。可能这里的一些人可以证明这一点。sframe正如作者在他的一个演示文稿中所建议的那样,还有另一个库被称为从内存中加载数据。它继续将数据序列化到磁盘上。
希望我总结得很好。