我目前正在阅读大型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),但我的机器有足够的内存来保存它。
答案 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 ...:
...
答案 3 :(得分:0)
如果您的csv文件比ram大,那么您可以使用
Dask Dataframe来自Dask Official ... Dask Wikipedia
借助dask数据框,即使数据集很大,您也可以进行数据分析