Python 2.7 Can';t在Python中使用Pandas或Blaze加载大文件(~2gb)

Python 2.7 Can';t在Python中使用Pandas或Blaze加载大文件(~2gb),python-2.7,pandas,blaze,large-data,Python 2.7,Pandas,Blaze,Large Data,我有一个超过500万行和20个字段的文件。我想在Pandas中打开它,但出现内存不足错误: pandas.parser.CParserError: Error tokenizing data. C error: out of memory 然后我读了一些关于类似问题的帖子,发现了Blaze,但以下三种方法(.Data、.CSV、.Table)显然都不管用 # coding=utf-8 import pandas as pd from pandas import DataFrame, Serie

我有一个超过500万行和20个字段的文件。我想在Pandas中打开它,但出现内存不足错误:

pandas.parser.CParserError: Error tokenizing data. C error: out of memory
然后我读了一些关于类似问题的帖子,发现了Blaze,但以下三种方法(.Data、.CSV、.Table)显然都不管用

# coding=utf-8
import pandas as pd
from pandas import DataFrame, Series
import re
import numpy as np
import sys
import blaze as bz
reload(sys)
sys.setdefaultencoding('utf-8')

# Gave an out of memory error
'''data = pd.read_csv('file.csv', header=0, encoding='utf-8', low_memory=False)
df = DataFrame(data)

print df.shape
print df.head'''

data = bz.Data('file.csv')

# Tried the followings too, but no luck
'''data = bz.CSV('file.csv')
data = bz.Table('file.csv')'''

print data
print data.head(5)
输出:

_1
_1.head(5)
[Finished in 1.0s]
火焰 对于
bz.Data(…)
对象,您必须实际执行一些操作才能获得结果。它根据需要加载数据。如果你在一个终端输入

>>> data
你可以将头部重新显示在屏幕上。如果需要使用打印功能,请尝试

bz.compute(data.head(5))
数据帧

你也可以考虑使用,它有一个类似的(虽然是子集的)API给熊猫< /p>

>>> import dask.dataframe as dd
>>> data = dd.read_csv('file.csv', header=0, encoding='utf-8')

2Gb csv可能至少是4Gb(解析IIRC需要两倍于4Gb),但这取决于列,请参阅使用前10万/100万进行尝试,并查看使用了多少RAM。这可能是不可能的,所以将其分块并转储(到pytables)。