Чтение CSV-файла, избегая проблем с памятью - PullRequest
0 голосов
/ 09 октября 2019

Я ищу альтернативный способ чтения набора данных из-за того факта, что, если я прошу его прочитать слишком много строк, я получаю Process finished with exit code 137 (interrupted by signal 9: SIGKILL), что убивает программу из-за чрезмерного использования памяти.

with open('pol.csv') as f:
    with open('pol_part.csv', 'w') as g:
        for i in range(15000000):
            g.write(f.readline())

от 10 до 12 мил в настоящее время - самое приятное место для того, что он действительно способен обрабатывать выходные данные, 15 и более убивает их. Самая большая проблема заключается в том, что второй набор данных, который он открывает pol_part.csv, равен 991 МБ, а исходный набор данных превышает 50 ГБ, поэтому я даже не анализирую подавляющее большинство данных.

Единственная причинаЯ открываю второй фрейм данных, потому что я могу прочитать его часть в панды, не отформатировав CSV до полного дерьма.

df_chunk = pd.read_csv('pol_part.csv',
                           names=name_cols,
                           usecols=cols,
                           sep=None,
                           skip_blank_lines=True,
                           engine='python',
                           error_bad_lines=False,
                           dtype=col_d_types).dropna()

Я пробовал панды, встроенные в chunksize=N, но это не удалось, потому что он не может правильно анализировать разделители даже с многоточечным kwarg sep=",\s+".

Iпытаюсь использовать функцию генератора, однако она продолжает перезаписывать старые данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...