繁体   English   中英

如何在python中操作一个巨大的CSV文件

[英]How to manipulate a huge CSV file in python

我有一个超过16G的CSV文件,每行是文本数据。 当我对整个CSV文件数据进行编码(例如,单热编码)时,由于内存限制,我的进程被终止。 有没有办法处理这种“大数据”?

我想将整个CSV文件拆分成多个“较小”的文件,然后将它们附加到另一个CSV文件,这是处理巨大的CSV文件的正确方法吗?

您的问题未说明您使用何种语言来处理此CSV文件。 我将使用C#进行回复,但我认为该策略对Java也同样有效。

您可以尝试使用StreamReader类逐行读取文件。 这应该照顾事物的阅读方面。

就像是:

using (var reader = new StreamReader(...))
{
    var line = string.Empty;

    while ((line != reader.ReadLine()) != null)
    {
        Process(line);
    }
}

注意:这是C#中的代码片段,伪代码比实际代码更多。

您应该使用某种本地数据库技术(SQLite或SQL Server LocalDB甚至MySQL)创建数据库,并将数据加载到一个或多个表中。

然后,您可以根据数据库中保存的数据而不是简单的文本文件编写任何其他进一步处理。

有效地阅读巨大的csv文件已经讨论过了吗?

使用16GB csv文件最合理的做法可能就是不将它全部加载到内存中,而是逐行读取和处理它:

with open(filename, "r") as f:
    lines = csv.reader(f)
    for line in lines:
        #Process the line

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM