使用pandas

时间:2017-05-10 11:41:15

标签: python pandas csv memory

我尝试使用pandas库将大型(大约4Gb)csv数据集导入python。当然,数据集不能同时存储在内存中,因此我使用大小为10000的块来读取csv。 在此之后我想将所有块连接成一个数据帧以执行一些计算,但是我的内存不足(我使用的是16GB RAM的桌面)。

到目前为止我的代码:

# Reading csv
chunks = pd.read_csv("path_to_csv", iterator=True, chunksize=1000)

# Concat the chunks
pd.concat([chunk for chunk in chunks])

pd.concat(chunks, ignore_index=True)

我搜索了StackOverflow上的许多线程,所有这些线程都提出了其中一个解决方案。有办法克服这个问题吗?我无法相信我无法使用16 gb ram处理4 gb数据集!

更新:我还没有想出任何导入csv文件的解决方案。我通过将数据导入PostgreSQL然后查询数据库来绕过问题。

1 个答案:

答案 0 :(得分:0)

我曾经在python中使用生成器处理过这种情况。我希望这会有所帮助:

def read_big_file_in_chunks(file_object, chunk_size=1024):
        """Reading whole big file in chunks."""
        while True:
            data = file_object.read(chunk_size)
            if not data:
                break
            yield data


f = open('very_very_big_file.log')
for chunk in read_big_file_in_chunks(f):
    process_data(chunck)