Python:同时读取多个大型csv



我有9个大型csv(每个12GB),具有完全相同的列结构和行顺序,只是每个csv中的值不同。我需要逐行浏览csv文件,并比较其中的数据,但它们太大了,无法存储在内存中。维护行顺序非常重要,因为行位置用作比较csv之间数据的索引,因此将表附加在一起并不理想。

我宁愿避免9嵌套"与open()为csv:"使用DictReader,这看起来很乱。

我已经尝试使用pandas和concatate:

files = [list_of_csv_paths]
result = pd.concat([pd.read_csv(f) for f in files], ignore_index=True)

但是它只是试图将所有数据加载到内存中,而我没有足够的RAM。改变pd。如果read_csv具有特定的chucksize,则返回TypeError。

我看到Dash可能可以用于此,但我对Dash没有经验。

我愿意接受任何建议。

我认为这可能是一个很好的开始-按块阅读-其中chunksize是按文档的行数。这应该是读取大文件的最佳方式。您也可以尝试使用线程来更快地处理它。

简单的例子:

import pandas as pd
chunksize = 10 ** 8
for chunk in pd.read_csv(filename, chunksize=chunksize):
process(chunk)

检查skiprows参数。下一个示例将读取从1000到2000的行。

的例子:

df = pd.read_csv('file.csv',sep=',', header=None, skiprows=1000, chunksize=1000)

相关内容

  • 没有找到相关文章

最新更新