Pandas Chunksize - Concat внутри и снаружи петлиPython

Программы на Python
Anonymous
 Pandas Chunksize - Concat внутри и снаружи петли

Сообщение Anonymous »

Я должен прочитать массивные файлы CSV (500 миллионов строк), и я попытался прочитать их с помощью Pandas, используя метод Chunksize, чтобы уменьшить потребление памяти. Но я не понял поведения метода CONCAT и возможности прочитать весь файл и уменьшить память. Я добавляю немного псевдокода, чтобы объяснить, что я сделал до сих пор. >

Код: Выделить всё

iter_csv = pd.read_csv(file.csv,chunksize=n/2)
df = pd.concat([chunk for chunk in iter_csv])
< /code>

Затем я должен применить функцию к DataFrame для создания нового столбца на основе некоторых значений: < /p>

df['newcl'] = df.apply(function)
< /code>

Все идет нормально.
Но теперь мне интересно, в чем разница между вышеуказанной процедурой и следующей: < /p>

iter_csv = pd.read_csv(file.csv,chunksize=n/2)
for chunk in iter_csv:
chunk['newcl'] = chunk.apply(function)
df = pd.concat([chunk])
< /code>

С точки зрения потребления оперативной памяти, я подумал, что второй метод должен быть лучше, поскольку он применяет функцию только к кусочке, а не к всей области данных. Но возникают следующие проблемы: < /p>


 Размещение df = pd.concat ([chunk]) < /code> внутри цикла возвращает мне DataFrame с размером n/2 (размер чанка), а не полный; , после того, как цикл возвращает ту же длину DataFrame N /2. Функция read_csv 
) является лучшей, уравновешивая скорость и потребление оперативной памяти. И мне также интересно, как я могу объединить куски, используя цикл для. < /p>

Спасибо за поддержку. < /p>

Подробнее здесь: https://stackoverflow.com/questions/291 ... -the-loops

Вернуться в «Python»