更快地读入csv文件

时间:2016-10-06 19:07:38

标签: python csv

我目前正在阅读大型csv文件(大约1亿行),使用https://docs.python.org/2/library/csv.html中所述的命令,例如: :

import csv
with open('eggs.csv', 'rb') as csvfile:
     spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
     for row in spamreader:
          process_row(row)

这是证明相当慢,我怀疑是因为每行都是单独读取的(需要大量读取硬盘的调用)。有没有办法一次读取整个csv文件,然后迭代它?虽然文件本身很大(例如5Gb),但我的机器有足够的内存来保存它。

4 个答案:

答案 0 :(得分:3)

import pandas as pd
df =pd.DataFrame.from_csv('filename.csv')

这将把它作为熊猫数据框阅读,这样你就可以用它做各种有趣的事情

答案 1 :(得分:1)

  

我的机器有足够的内存来保存在内存中。

然后,在迭代器上调用list

spamreader = list(csv.reader(csvfile, delimiter=' ', quotechar='|'))

答案 2 :(得分:1)

是的,有一种方法可以立即读取整个文件:

with open('eggs.csv', 'rb', 5000000000) as ...:
    ... 

参考:https://docs.python.org/2/library/functions.html#open

答案 3 :(得分:0)

如果您的csv文件比ram大,那么您可以使用

  • DASK(Dask是用于Python的并行计算和数据分析库。它支持针对计算和大数据收集而优化的动态任务调度。)

Dask Dataframe来自Dask Official ... Dask Wikipedia

借助dask数据框,即使数据集很大,您也可以进行数据分析