2017-05-10 84 views
1

我試圖導入大型CSV數據集使用熊貓庫約4GB到蟒蛇。當然,數據集不能一次全部放入內存中,因此我使用大小爲10000的塊來讀取csv。 這個我想Concat的所有塊成一個單一的數據幀,以執行一些計算,但是我跑了內存後(我用16GB的RAM桌面)。 到目前爲止我的代碼: 閱讀CSV:進口大型數據集(4GB)在使用python熊貓

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

的毗連大塊:

pd.concat([chunk for chunk in chunks]) 

pd.concat(chunks, ignore_index=True) 

我搜索計算器上的多線程和所有的人都認爲這些解決方案之一。有沒有辦法解決這個問題?我不敢相信我不能用16 GB的RAM來處理4 GB的數據集!

編輯:到目前爲止,我還沒有想出如何導入CSV文件中的任何解決方案。我通過將數據導入一個PostgreSQL和查詢數據庫

+0

爲什麼不能一次填充DataFrame? – Elmex80s

+0

假設內存問題,您是否嘗試過Dask或Apache Spark? –

+0

不知道如何做到這一點..你能給我一個例子嗎? – lacrima

回答

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) 
+0

仍然得到內存錯誤。不管怎樣,謝謝你 :) – lacrima