Панды, дающие ошибку памяти - PullRequest
0 голосов
/ 25 мая 2018

У меня есть код, который идет почти к 10K + CSV-файлам, и каждый файл имеет почти 16K + строк, имеющих несколько столбцов.Я запускаю код и через 5 минут я получил эту ошибку ниже.Я могу понять, что если я установлю low_memory = False, это подавит ошибку.Но как решить эту проблему?Ошибка, кажется, из-за ниже.Можно ли это исправить?

df.groupby(['A', 'B'])['C'] 

DtypeWarning: Columns (9,11,12,13,14) have mixed types. Specify dtype option on import or set low_memory=False.

  File "\Python36-32\lib\site-packages\pandas\io\parsers.py", line 705, in parser_f
    return _read(filepath_or_buffer, kwds)
  File "\Python36-32\lib\site-packages\pandas\io\parsers.py", line 451, in _read
    data = parser.read(nrows)
  File "\Python36-32\lib\site-packages\pandas\io\parsers.py", line 1083, in read
    df = DataFrame(col_dict, columns=columns, index=index)
  File "\Python36-32\lib\site-packages\pandas\core\frame.py", line 330, in __init__
    mgr = self._init_dict(data, index, columns, dtype=dtype)
  File "\Python36-32\lib\site-packages\pandas\core\frame.py", line 461, in _init_dict
    return _arrays_to_mgr(arrays, data_names, index, columns, dtype=dtype)
  File "\Python36-32\lib\site-packages\pandas\core\frame.py", line 6140, in _arrays_to_mgr
    return create_block_manager_from_arrays(arrays, arr_names, axes)
  File "\Python36-32\lib\site-packages\pandas\core\internals.py", line 4632, in create_block_manager_from_arrays
    blocks = form_blocks(arrays, names, axes)
  File "\Python36-32\lib\site-packages\pandas\core\internals.py", line 4704, in form_blocks
    int_blocks = _multi_blockify(int_items)
  File "\Python36-32\lib\site-packages\pandas\core\internals.py", line 4773, in _multi_blockify
    values, placement = _stack_arrays(list(tup_block), dtype)
  File "\Python36-32\lib\site-packages\pandas\core\internals.py", line 4816, in _stack_arrays
    stacked = np.empty(shape, dtype=dtype)
MemoryError

1 Ответ

0 голосов
/ 25 мая 2018

Проверьте, не совпадает ли размер ваших общих данных с объемом вашей ОЗУ.

Я допустил аналогичные ошибки при работе с набором данных ~ 10 ГБ (на компьютере с 16 ГБ ОЗУ) и выполнениинесколько вкладок в Chrome одновременно.

Если это произойдет, попробуйте удалить свои кадры данных после их обработки и перед чтением следующего файла CSV:

allFiles = glob.glob(path + "/*.csv")
for file in allFiles:
    df = pd.read_csv(file)
    process(df)    
    del(df)

OBS: Обычно вам нужно 10x какмного оперативной памяти как данных, с которыми вы работаете, чтобы иметь возможность плавно работать в пандах.

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