如何操作一个巨大的 csv 文件(> 12GB)?

Posted

技术标签:

【中文标题】如何操作一个巨大的 csv 文件(> 12GB)?【英文标题】:How to manipulate a huge csv file (> 12GB)? 【发布时间】:2014-10-07 21:56:50 【问题描述】:

我正在处理一个大约 13GB 和大约 130,000,000 行的巨大 csv 文件。我正在使用 python 并尝试使用我以前用于此类工作的 pandas 库来处理它。但是,我以前总是处理少于 2,000,000 行或 500MB 的 csv 文件。对于这个巨大的文件,pandas 似乎不再合适,因为当我尝试我的代码时我的电脑正在死机(2011 年的 MacBook Pro,8GB RAM)。有人可以告诉我一种在python中处理这种文件的方法吗? csv库会更合适吗?

提前谢谢你!

【问题讨论】:

分块读取,在pd.read_csv中设置chunksize参数,另外你可以存储这个hd5f 你对文件做了什么?您能否将您的工作表示为一次性算法? 该文件从洛杉矶的某个走廊收集了 6 个月的 GPS 探测数据。每条线代表在特定时间和特定(纬度,经度)点检测到的设备。设备以随机 ID 命名。我想根据“ID”列对文件进行分类,以找出重复次数最多的文件并绘制相关路径。谢谢 EdChum 我会尝试使用这种方法。另一种方法是使用每个“每日文件”(也可在数据库中获得),但这是一个限制,因为某些 ID 会在不同的日子出现。我更愿意在最一般的情况下工作。 【参考方案1】:

在 Python 中,我发现要打开大文件,最好使用生成器,如下所示:

with open("ludicrously_humongous.csv", "r") as f:
    for line in f:
        #Any process of that line goes here

以这种方式编程,使您的程序一次只能将一行读入内存,让您能够以敏捷的方式处理大文件。

【讨论】:

以上是关于如何操作一个巨大的 csv 文件(> 12GB)?的主要内容,如果未能解决你的问题,请参考以下文章

如何从巨大的 csv 文件中清除不良数据

如何按行条件将巨大的 csv 文件读入 R?

如何根据日期列在不同的文本/csv文件中转储一个巨大的mysql表?

如何将包含 200,00 行的巨大 CSV 文件导入 MySQL(异步且快速)?

有效地读取巨大的 csv 文件?

Python/SQLAlchemy:如何将巨大的红移表保存到 CSV?