Python 将CSV文件读入Pandas数据帧,并进行分块,从而生成单个目标数据帧

Python 将CSV文件读入Pandas数据帧,并进行分块,从而生成单个目标数据帧,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我需要将一个大的4GB文件作为csv文件读入数据帧。这是我目前的代码: source_data_df = pd.read_csv(temp_file, skipinitialspace=True, dtype=str, na_values=['N.A.']) 它由于内存不足错误而失败 我知道我可以使用chunksize选项来降低内存利用率,并在保存到磁盘之前分块处理数据。在将csv文件中的所有数据保存到磁盘之前,我不知道如何使用这些数据块创建一个数据帧。我需要帮助完成这段代码来创建这个最终的数

我需要将一个大的4GB文件作为csv文件读入数据帧。这是我目前的代码:

source_data_df = pd.read_csv(temp_file, skipinitialspace=True, dtype=str, na_values=['N.A.'])
它由于内存不足错误而失败


我知道我可以使用chunksize选项来降低内存利用率,并在保存到磁盘之前分块处理数据。在将csv文件中的所有数据保存到磁盘之前,我不知道如何使用这些数据块创建一个数据帧。我需要帮助完成这段代码来创建这个最终的数据帧。有人能帮忙吗

chunksize = 10000000
with pd.read_csv(temp_file, skipinitialspace=True, dtype=str, na_values=['N.A.'], chunksize=chunksize) as reader:
    for chunk in reader:
        process(chunk)
或者,可以将处理后的块附加到磁盘上的单个目标文件中吗?那么上面的代码看起来如何

此外,需要建议3GB文件的最佳chunksize,chunksize是否表示块的大小(以字节为单位)?比如说500 MB的块会是什么

chunksize的度量单位是什么?我想是字节,有人能确认吗


多谢各位

您可以使用以下命令来读取块:

pd.read\u csv(“路径到文件”,chunksize=chunksize)中的df的
:
过程(df)
块的大小与数据相关。例如,如果您的文件有4GB和10个样本(行),并且您将chunksize定义为5,则每个区块将有~2GB和5个样本


您也可以分析文件格式。

“在将数据块保存到磁盘之前,我不知道如何使用csv文件中的所有数据创建生成的单个数据帧。”因此,您希望在某个时候将整个数据帧存储在内存中吗?这不是违背了分块加载的目的吗?如果您没有足够的内存一次加载所有数据,您将没有足够的内存将所有数据块连接到一个数据帧中。我可以将处理过的数据块附加到磁盘上的单个目标文件中吗。上面的代码看起来怎么样?你能帮忙吗?什么样的文件?您已经有一个CSV文件。一个新的CSV文件。如果有可能附加到一个新的拼花地板文件,将是伟大的看到了!很酷,那么将块从一个读取/分块的4GB csv文件保存到一个单独的拼花地板文件(有100000行)的实际代码是什么样子的呢?您可以将每个块导出到拼花地板,
df.to_拼花地板(“path_to_file”)
,导出后,您可以在文件之间进行合并。