如何操作一个巨大的 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文件中转储一个巨大的mysql表?