вот моя проблема.
У меня есть один большой CSV-файл, содержащий чуть более 100 миллионов строк, которые мне нужно разделить на гораздо более мелкие файлы (при необходимости я могу добавить больше деталей). В настоящий момент я читаю большой CSV-блок, выполняю некоторые вычисления, чтобы определить, как разделить блок, и, наконец, записываю (добавляю) файлы с
df.to_csv(outfile, float_format='%.8f', index=False, mode='a', header=header)
(переменная header
равна True, если я пишу в 'outfile' впервые, в противном случае - False).
Во время выполнения кода я заметил, что объем памяти на диске, занимаемый меньшими файлами в целом, вероятно, станет больше, чем в три раза размер одного большого CSV.
Итак, вот мои вопросы:
- это нормальное поведение? (возможно, но я спрашиваю на всякий случай)
- можно ли уменьшить размер файлов? (разные форматы файлов?) [решено путем сжатия, см. обновление ниже и комментарии]
- Есть ли лучшие типы файлов для этой ситуации по сравнению с CSV?
Обратите внимание, что я не обладаю обширными знаниями в области программирования, я просто использую Python для своей диссертации.
Заранее спасибо всем, кто поможет.
ОБНОВЛЕНИЕ: благодаря @AshishAcharya и @PatrickArtner я узнал, как использовать сжатие при записи и чтении CSV. Тем не менее, я хотел бы знать, есть ли какие-либо типы файлов, которые могут быть лучше, чем CSV для этой задачи.
НОВЫЙ ВОПРОС: (может быть, глупый вопрос) работает ли добавление для сжатых файлов?
ОБНОВЛЕНИЕ 2: с использованием опции сжатия Я заметил кое-что, чего не понимаю. Чтобы определить размер папок, меня научили использовать команду du -hs <folder>
, но использование ее в папке, содержащей сжатые файлы, или в папке, содержащей несжатые файлы, приводит к одинаковому значению «3,8 ГБ» (обе создаются с использованием одинаковых первые 5М рядов от большого CSV). Вместо этого из файлового менеджера (Nautilus) я получаю около 590 МБ для одного, содержащего несжатый CSV, и 230 МБ для другого. Чего мне не хватает?