首页 > 解决方案 > 如何使用 Python 迭代地从大型 .csv 文件中提取和保存 .csv 数据块?

问题描述

我是 Python 新手,我尝试使用 pandas 读取一个大的 .csv 文件(具有数十万或可能数百万行;以及大约 15.000 列)。

我认为我可以做的是在一个新的 .csv 文件中创建并保存每个块,迭代地跨越所有块。我目前正在使用内存相对有限的笔记本电脑(大约 4 Gb,正在升级它),但我想知道是否可以在不更改设置的情况下做到这一点。或者,我可以将这个过程转移到具有大 RAM 的 pc 中并尝试更大的块,但我希望即使对于较短的行块也能做到这一点。

我已经看到我可以使用下面的代码快速处理数据块(例如 10.000 行和所有列)。但由于我是 Python 初学者,我只设法订购了第一块。我想在块之间迭代循环并保存它们。

import pandas as pd
import os

print(os.getcwd())
print(os.listdir(os.getcwd()))

chunksize = 10000

data = pd.read_csv('ukb35190.csv', chunksize=chunksize)

df = data.get_chunk(chunksize)

print(df)

export_csv1 = df.to_csv (r'/home/user/PycharmProjects/PROJECT/export_csv_1.csv', index = None, header=True)

标签: pythonpandas

解决方案


如果您没有对数据进行任何处理,那么您甚至不必将其存储在任何变量中。您可以直接进行。下面是 PFA 代码。希望这对您有所帮助。

import pandas as pd
import os

chunksize = 10000
batch=1

for chunk in pd.read_csv(r'ukb35190.csv',chunksize=chunk_size):
  chunk.to_csv(r'ukb35190.csv'+str(batch_no)+'.csv',index=False)
  batch_no+=1

推荐阅读