TW Community

匯入CSV資料並加以處理 但電腦記憶體不夠該如何解 ?

目前在執行一個project,資料要用到非常大,檔案差不多有幾百幾千萬rows。
且匯入資料後,需要進行處理。

原資料型態 :

以下為程式碼:

import pandas as pd 
df = pd.read_csv('file_path')
# 需要對資料以 " | " 作為分隔。
x = str(df.iloc[:,0]).split("|")
# 再將分隔後的資料,併回去一個空的DataFrame。

但在併回去DataFrame的時候,就產生了MemoryError,顯示我電腦記憶體不夠。
求解,感謝!

先將檔案讀進來後,再把每一列處理好放回去,這樣記憶體的使用量可能會是原先只讀檔的二至三倍
可能因此超出記憶體的限制

看起來你的 csv 使用 | 作為分隔的而非預設的 ,
可以在讀檔的時候使用 sep 或者 delimiter 去設定,如果你還需要自行設定每一行的欄位名稱,也可以用 names 去設定
例如

df = pd.read_csv('file_path', delimiter='|', names=['id', 'column0', ...])

如果你原始就有欄位資料的話 names 就不需要設定,若要忽略 csv 裡的欄位資料,記得要補上 header=0

感謝回覆,已經成功解決問題了。