无法在Python

时间:2015-10-15 03:44:05

标签: 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, 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]

1 个答案:

答案 0 :(得分:1)

火焰

对于bz.Data(...)对象,您必须实际执行某些操作才能获得结果。它根据需要加载数据。如果您在终端并输入

>>> data

你会把头部重新编辑到屏幕上。如果您需要使用打印功能,请尝试

bz.compute(data.head(5))

dask.dataframe

你也可以考虑使用dask.dataframe,它有一个类似的(虽然是子集化的)API到pandas

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