ошибка памяти при чтении большого размера CSV в pandas - PullRequest
0 голосов
/ 20 января 2020

Память моего ноутбука составляет 8 гигабайт, и я пытался прочитать и обработать большой CSV-файл, и у меня возникли проблемы с памятью. Я нашел решение, которое использует chunksize для обработки фрагмента файла порциями, но по-видимому, когда uisng chunsize формат файла vecoe textreaderfile и код, который я использовал для обработки с ним обычных csvs, больше не работает, этот код я пытаюсь использовать, чтобы прочитать, сколько предложений в файле csv ,

wdata = pd.read_csv(fileinput, nrows=0,).columns[0]
skip = int(wdata.count(' ') == 0)
wdata = pd.read_csv(fileinput, names=['sentences'], skiprows=skip, chunksize=1000)

data = wdata.count()
print(data)

ошибка, которую я получаю, такова: -

Traceback (most recent call last):
  File "table.py", line 24, in <module>
    data = wdata.count()
AttributeError: 'TextFileReader' object has no attribute 'count'

Я попробовал другой способ, также запустив этот код


TextFileReader = pd.read_csv(fileinput, chunksize=1000)  # the number of rows per chunk

dfList = []
for df in TextFileReader:
    dfList.append(df)

df = pd.concat(dfList,sort=False)
print(df)

, и это дает ошибка


   data = self._reader.read(nrows)
  File "pandas/_libs/parsers.pyx", line 881, in pandas._libs.parsers.TextReader.read
  File "pandas/_libs/parsers.pyx", line 908, in pandas._libs.parsers.TextReader._read_low_memory
  File "pandas/_libs/parsers.pyx", line 950, in pandas._libs.parsers.TextReader._read_rows
  File "pandas/_libs/parsers.pyx", line 937, in pandas._libs.parsers.TextReader._tokenize_rows
  File "pandas/_libs/parsers.pyx", line 2132, in pandas._libs.parsers.raise_parser_error
pandas.errors.ParserError: Error tokenizing data. C error: Expected 2 fields in line 3, saw 4

1 Ответ

1 голос
/ 20 января 2020

Вы должны перебрать куски:

csv_length = 0    
for chunk in pd.read_csv(fileinput, names=['sentences'], skiprows=skip, chunksize=10000):
    csv_length += chunk.count()
print(csv_length )
...