web-dev-qa-db-ja.com

データのトークン化エラー。 Cエラー:メモリ不足pandas python、large file csv

3.5 goの大きなcsvファイルがあり、パンダを使用して読みたいです。

これは私のコードです:

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です。

10

この仲間を試してください:

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
11

このエラーは、chunksize = 200000によっても発生する可能性があります。私の場合、それを減らすことで問題は解決しました。 ℕʘʘḆḽḘのソリューションでは、チャンクサイズも小さくなり、トリックを行った可能性があります。

2
Justas

Csvファイルを呼び出すときにerror_bad_lines = Falseを設定してみてください。

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