我有一个相对较大(1 GB)的文本文件,我希望通过对类别进行汇总来缩小它的大小:
Geography AgeGroup Gender Race Count
County1 1 M 1 12
County1 2 M 1 3
County1 2 M 2 0
收件人:
Geography Count
County1 15
County2 23
如果整个文件可以放在内存中,这将是一个简单的问题,但使用“pandas.read_csv()”会出现“MemoryError”。因此,我一直在寻找其他方法,并且似乎有许多选项 - HDF5?使用“itertools”(这似乎很复杂-生成器?)或仅使用标准文件方法读取第一个地理位置(70行),总结计数列并在加载另外70行之前写出。
是否有人对如何做到最好有建议?我特别喜欢流式传输数据的想法,特别是因为我可以想到许多其他地方会很有用。我最感兴趣的是这种方法,或者类似地使用尽可能基本的功能。
编辑: 在这种小型情况下,我只需要按地理位置求和计数。但是,如果我可以读入一块,指定任何函数(例如将2列相加或按地理位置获取某一列的最大值),应用该函数,并在读入新块之前写出输出,则最理想不过了。
pd.read_csv('myfile.csv', chunksize=1000)
。然后你可以在循环内对每个块进行操作。 - chrisaycock