2015-05-15 161 views
1

我有一個大型的數據集,它幾乎是csv格式的4 GB。但我不需要整個數據集,我需要一些特定的列。是否可以讀取一些特定的列而不是使用Python Panda讀取整個數據集?它會增加閱讀文件的速度嗎?在Python中讀取大型CSV文件熊貓

非常感謝您的建議。

回答

0

如果您擁有4 GB的內存,請不必擔心(您需要編寫較少內存密集型解決方案的時間不值得)。使用pd.read_csv讀取整個數據集,然後將子集分配到所需的列。如果您沒有足夠的內存,並且您確實需要逐行讀取文件(即逐行讀取),請修改this代碼以僅將感興趣的列保留在內存中。

如果你有足夠的內存,而且你的問題是你有這種格式的多個文件,那麼我建議使用multiprocessing包來並行化任務。

from muliprocessing import Pool 
pool = Pool(processes = your_processors_n) 
dataframeslist = pool.map(your_regular_expression_readin_func, [df1, df2, ... dfn]) 
+0

我覺得我的問題不是記憶,問題是閱讀速度。我正在使用正則表達式作爲分隔符,是否會讓它變慢? –

+0

您可能會遇到正則表達式的速度問題,我會發布有關該正則表達式的問題。加載數據顯然需要時間,但您可以始終加載一次,子集,並只保存感興趣的列,以便下次需要時,數據加載速度會更快。速度問題很可能在正則表達式中。 – Michael

+0

等一下,也許我誤解了。您正在使用正則表達式來加載.csv文件?我以爲你是在事後應用它。使用'pandas.read_csv'來讀取一個csv文件,如果你像pd.read_csv一樣導入pandas,就像我在上面的回答中一樣。 – Michael