2015-05-15 127 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