2014-10-07 56 views
1

我正在處理大約13GB和大約130,000,000行的巨大csv文件。我正在使用python,並嘗試使用之前用於此類工作的pandas庫進行工作。但是,我一直在處理少於200萬行或500MB的csv文件。對於這個龐大的文件,大熊貓似乎不再適用了,因爲當我嘗試使用我的代碼時(從2011年開始使用8GB RAM的MacBook Pro),我的電腦即將死去。有人能告訴我一種在python中處理這種文件的方法嗎? csv庫會更合適嗎?如何操作一個巨大的csv文件(> 12GB)?

預先感謝您!

+5

只讀塊,在['pd.read_csv']中設置'chunksize'參數(http://pandas.pydata.org/pandas-docs/stable/io.html#io-read-csv-table ),另外你可以存儲這個hd5f – EdChum 2014-10-07 21:59:07

+0

你在做什麼文件?你能否將你的工作表現爲單程算法? – 2014-10-08 02:16:35

+0

該文件從洛杉磯的某個走廊收集6個月的GPS探測數據。每條線代表在特定時間和特定(經度,緯度)點檢測到的設備。設備以隨機ID命名。我想根據「ID」列對文件進行分類,找出哪個文件重複最多,並繪製相關路徑。謝謝EdChum我會嘗試使用這種方法。另一種方法是處理每個「每日文件」(也可在數據庫中使用),但這是一種限制,因爲有些ID在不同的日子出現。我寧願在最常見的情況下工作。 – Antoine 2014-10-08 20:51:20

回答

0

在Python中我發現,打開大文件,最好是用發電機爲:

with open("ludicrously_humongous.csv", "r") as f: 
    for line in f: 
     #Any process of that line goes here 

編程這種方式,使得在一次讀入內存只有一行程序,讓您以敏捷的方式處理大文件。