Выбор ответа Middle Чтение и запись данных спрашивают часто обновлено
Файл больше памяти в pandas
Вопрос
CSV на 30 ГБ, памяти 16 ГБ. Нужна сумма amount по region. Что сработает в pandas?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Читать с chunksize и usecols, суммировать куски и сложить итог. Сумма складывается: частичные суммы по кускам можно объединить pd.concat(parts).groupby(level=0).sum(). usecols дополнительно режет память.
Варианты ответа
pd.read_csv(path)иgroupby, pandas сам подгрузит файл частямиpd.read_csv(path, low_memory=True), затем обычныйgroupby- Прочитать с
nrows=1_000_000и умножить результат на число частей - Читать с
chunksizeиusecols, суммировать куски и сложить итогправильный ответ
Разбор
Сумма складывается: частичные суммы по кускам можно объединить pd.concat(parts).groupby(level=0).sum(). usecols дополнительно режет память. Обычный read_csv грузит файл целиком и упадёт. low_memory влияет только на внутреннее определение типов, а не на объём. Экстраполяция по первому миллиону строк даёт неверный ответ.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Как прочитать большой файл в pandas
Следующий вопрос
Агрегат по кускам через chunksize