Ускорение ввода-вывода: паркет и перо

Nov 27 2022
Некоторые из наших проблем связаны с данными, которые мы считываем из локального хранилища. Операции чтение-обработка-запись могут быть удобными для относительно небольших наборов данных, но эти действия для больших .

Некоторые из наших проблем связаны с данными, которые мы считываем из локального хранилища. Операции чтения-обработки-записи могут быть удобными для относительно небольших наборов данных, но эти действия для больших файлов .csv для нас довольно громоздки. Они могут быть очень требовательны с точки зрения времени и ресурсов.

Я представлю два типа файлов, которые увеличат скорость чтения-записи ваших данных и сократят размер данных, хранящихся на диске:

  • Паркет
  • Пух Перо
  • Доступен по умолчанию с Python-Pandas. Но вам, возможно, придется дополнительно установить pyarrow и некоторые его расширения в зависимости от вашего типа данных.
  • Поддержка управления вводом-выводом на основе столбцов. Таким образом, вы можете предотвратить временное использование дополнительной оперативной памяти при чтении всех данных и последующем удалении ненужных столбцов.
  • Сохраняя данные в двоичном формате в их собственном виде, а не в необработанном виде, вы можете сэкономить до 50% места в хранилище и получить ускорение до x100 в операциях чтения-записи.

Паркет

Пух Перо

Заключение

Это так просто! Я определенно рекомендую использовать эти методы, когда вам не нужно хранить данные в необработанном формате, и каждому пользователю не нужно открывать их в Excel в любое время! В этом исключительном случае логичнее распараллелить чтение и запись данных вместо изменения формата данных. Я также думаю о рассмотрении этого сценария в будущем. Надеюсь, этот контент был для вас полезен, я думаю, что это что-то простое, но достаточно эффективное.

Я использую эти методы в соревнованиях Kaggle и получаю довольно хорошие ускорения. Вы можете просмотреть мой пример кода здесь !