#python #csv #pandas #kaggle
#python #csv #панды #kaggle
Вопрос:
Вероятно, это хорошо известный ответ …. но почему файл (csv) размером 11 ГБ становится более чем в два раза больше при импорте в Python (Pandas) или R?
Данные, о которых идет речь, взяты из соревнования Kaggle, размер которого при распаковке составляет 11 ГБ (файл train). Когда я загружаю его в python или R, он занимает более чем в два раза больше места. У меня 32 ГБ оперативной памяти в Windows (при загрузке файла освобождается ~ 29), и мне почти не хватает места.
В Python:
import pandas as pd
train=pd.read_csv("C:\Users\train.csv")
В R:
train<-read.csv(file="C:\train.csv",header=TRUE)
Комментарии:
1. Я предполагаю, что из-за типов данных попробуйте принудительно использовать 32-битные числа с плавающей запятой
2. Есть ли способ сделать это легко?
Ответ №1:
Сериализованные данные и данные в памяти отличаются по структуре
Сериализация данных на диск (например, в файл CSV) — довольно простая задача, она должна поддерживать только запись данных и чтение их предсказуемым способом. Единственное правило, которому нужно следовать, — использовать четко определенный формат.
С другой стороны, данные, загружаемые в ОЗУ для обработки, часто растут по нескольким причинам:
- все числа имеют одинаковый размер в байтах, и для соответствия всем ожидаемым значениям количество байтов больше, чем необходимо для большинства чисел.
- в 64-разрядных версиях программ минимальный объем выделенной памяти ограничен — снизу, поэтому даже самые простые данные занимают больше данных, чем необходимо, только для устранения причины, заданной ОС
- часто существуют вспомогательные структуры (например, для хэшей / словарей есть своего рода индекс)
В любом случае, может случиться так, что данные в памяти более эффективны, чем какой-то плохой формат сериализации, но, как вы уже испытали, это не ваш случай.