标记数据时出错。 C错误:内存不足pandas python,大文件csv

时间:2016-12-23 14:29:52

标签: python csv pandas memory large-files

我有一个3.5 go的大型csv文件,我想用pandas读它。

这是我的代码:

import pandas as pd
tp = pd.read_csv('train_2011_2012_2013.csv', sep=';', iterator=True, chunksize=20000000, low_memory = False)
df = pd.concat(tp, ignore_index=True)

我收到此错误:

pandas/parser.pyx in pandas.parser.TextReader.read (pandas/parser.c:8771)()

pandas/parser.pyx in pandas.parser.TextReader._read_rows (pandas/parser.c:9731)()

pandas/parser.pyx in pandas.parser.TextReader._tokenize_rows (pandas/parser.c:9602)()

pandas/parser.pyx in pandas.parser.raise_parser_error (pandas/parser.c:23325)()

CParserError: Error tokenizing data. C error: out of 

我的公羊的容量是8 Go。

4 个答案:

答案 0 :(得分:7)

试试这个兄弟:

mylist = []

for chunk in  pd.read_csv('train_2011_2012_2013.csv', sep=';', chunksize=20000):
    mylist.append(chunk)

big_data = pd.concat(mylist, axis= 0)
del mylist

答案 1 :(得分:1)

您可以在调用csv文件时尝试设置 error_bad_lines = False ,即

import pandas as pd
df = pd.read_csv('my_big_file.csv', error_bad_lines = False)

答案 2 :(得分:0)

此错误也可能是由 chunksize = 20000000 引起的。减少这种情况可以解决我的问题。 在ℕʘʘḆḽḘ的解决方案中,chunksize也减小了,这也许可以解决问题。

答案 3 :(得分:0)

您可以尝试添加参数engine='python。加载数据的速度较慢,但​​对我的情况有所帮助。