ошибка памяти при загрузке CSV-файла?

У меня есть ноутбук с Ubuntu с 8 ГБ оперативной памяти, а также файл CSV объемом 2 ГБ, но когда я использую метод pandas read_csv для загрузки своих данных, оперативная память полностью заполняется, в то время как 7 ГБ оперативной памяти свободно. как файл размером 2 ГБ заполняет 7 ГБ оперативной памяти?


person Abdullah Shobi    schedule 09.11.2016    source источник
comment
Можете ли вы вставить код, чтобы сопровождать свой вопрос?   -  person kiran.koduru    schedule 09.11.2016
comment
Эти потоки SO могут быть полезны ошибка с большими наборами данных для pandas concat и numpy append"> stackoverflow.com/questions/19590966/ stackoverflow.com/questions/17557074/   -  person Bharath    schedule 09.11.2016


Ответы (2)


Причина, по которой вы получаете это предупреждение low_memory, может заключаться в том, что угадывание dtypes для каждого столбца требует очень много памяти. Pandas пытается определить, какой dtype установить, анализируя данные в каждом столбце.

В случае использования 32-битной системы: при использовании 32-битной версии в Windows часто возникают ошибки памяти. Это связано с тем, что 32-битные процессы по умолчанию получают только 2 ГБ памяти для игры.

Попробуй это :

tp = pd.read_csv('file_name.csv', header=None, chunksize=1000)
df = pd.concat(tp, ignore_index=True)
person harshil9968    schedule 09.11.2016
comment
да. это было из-за dtypes, и я преобразовал некоторые столбцы dtype во время загрузки. Благодарю. - person Abdullah Shobi; 11.11.2016
comment
я пытался проголосовать, но он не отображается публично, потому что у меня меньше 15 репутации;) - person Abdullah Shobi; 16.11.2016

попробуйте использовать параметр chunksize:

df = pd.concat((chunk for chunk in pd.read_csv('/path/to/file.csv', chunksize=10**4)),
               ignore_index=True)
person MaxU    schedule 09.11.2016
comment
ваш первый ужасно неэффективен, добавьте примечание: pandas.pydata.org/pandas-docs /stable/merging.html - person Jeff; 09.11.2016
comment
каждую итерацию цикла вы делали копию все большего и большего кадра; вместо этого добавьте в список и вызовите concat один раз (как в текущем примере) - person Jeff; 09.11.2016