我有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)