Выбор подходящего формата файла является критически важным аспектом науки о данных, поскольку он может значительно повлиять на эффективность хранения данных, доступа к ним и манипулирования ими.
В этом блоге мы рассмотрим некоторые необычные и распространенные форматы файлов и протестируем их.
Я измерю время, необходимое для чтения и записи данных для каждого из перечисленных ниже форматов, и запишу объем используемого хранилища. Набор данных, используемый для записи, будет состоять из данных о подержанных автомобилях, полученных из списков транспортных средств на Craigslist.org, размером 1,5 ГБ. Эти тесты проводились на компьютере M1 Mac Air. (Ссылка на набор данных)
- XML (расширяемый язык разметки)
XML — это текстовый формат файла для хранения и обмена структурированными данными. Он использует теги для определения элементов и атрибутов для описания их свойств. XML широко используется в веб-приложениях и форматах обмена данными. Он удобочитаем и может быть легко проанализирован с использованием таких языков программирования, как Python и Java. Однако XML может привести к большему размеру файлов, чем двоичные форматы, что делает его менее эффективным для хранения и передачи больших наборов данных.

код, используемый для измерения:
t_xml_write = timeit.timeit("df_clean.to_xml('vehicle.xml')", number=1, globals=globals())
t_xml_read = timeit.timeit('pd.read_xml(datadir + "/vehicle.xml")', number=3, globals=globals())
size = os.path.getsize(datadir + '/vehicle.xml')
выход:
write : 28.964869250019547 sec read : 34.683035082998686 sec size : 285330571 B
Точно так же для форматов ниже мы измерили три фактора.
2. Паркет
Parquet — это столбчатый формат файла, разработанный для обработки больших данных. Он предназначен для эффективного хранения и извлечения данных путем разделения и сжатия столбцов данных. Parquet широко используется в средах обработки больших данных, таких как Apache Hadoop и Apache Spark. Он подходит для больших наборов данных и поддерживает сложные типы данных, такие как вложенные структуры и массивы. Однако для Parquet требуется специальное программное обеспечение для чтения и записи, что может быть недостатком для обмена данными и совместной работы.
write : 0.6625609590555541 sec read : 0.6355639159446582 sec size : 16028344 B
3. Перо
Feather — это легкий и эффективный формат файлов для хранения и обмена фреймами данных. Он предназначен для быстрого чтения и записи, с низкими накладными расходами и совместимостью с несколькими языками программирования, включая R и Python. Feather хранит данные в двоичном формате, что делает их меньше и быстрее для чтения и записи, чем текстовые форматы, такие как CSV. Однако Feather может не подходить для хранения сложных типов данных или наборов данных с более чем одним фреймом данных.
write : 0.6625609590555541 sec read : 0.500286458991468 sec size : 43255130 B
4. CSV (значения, разделенные запятыми)
CSV — это простой и широко используемый формат файла для хранения и обмена табличными данными. Он разделяет значения в таблице с помощью запятых и сохраняет каждую строку на новой строке. CSV поддерживается почти всеми программами для работы с электронными таблицами, языками программирования и базами данных. Его легко читать, редактировать и конвертировать в другие форматы файлов. Он также легкий и занимает меньше места для хранения, чем файлы других форматов. Однако CSV имеет некоторые ограничения, такие как невозможность хранения сложных типов данных, таких как изображения и аудио, а также сложность обработки отсутствующих или противоречивых данных.

выход:
write : 3.1790936249890365 sec read : 2.1943200839450583 sec size : 75330898 B
5. JSON (обозначение объектов JavaScript)
JSON — это легкий и универсальный формат файлов для хранения и обмена структурированными данными. Это текстовый формат, в котором для представления объектов данных используется пара ключ-значение. JSON легко читать, писать и анализировать с использованием таких языков программирования, как Python и JavaScript. Это популярный формат файла для хранения данных, собранных из API и веб-приложений. Однако JSON может не подходить для больших или сложных наборов данных, так как это может привести к большим размерам файлов и может быть неудобным для чтения.
write : 1.0698593749548309 sec read : 11.388405709003564 sec size : 171589259 B
6. HDF5 (иерархический формат данных)
HDF5 — это формат двоичных файлов для хранения и обмена научными данными. Он предназначен для хранения больших и сложных наборов данных и поддерживает сжатие, параллельный ввод-вывод и фрагментацию данных. HDF5 широко используется в научных исследованиях, таких как астрономия, биоинформатика и физика. Он также поддерживает хранение метаданных и управление версиями, что делает его полезным для долгосрочного архивирования данных. Однако HDF5 требует специализированного программного обеспечения для чтения и записи, а его сложность может затруднить использование новичками.
write : 0.5861069170059636 sec read : 1.0490607499959879 sec size : 77031920 B
7. Рассол
Формат Pickle — это собственный формат сериализации в Python, используемый для хранения объектов Python в двоичном формате. Он отличается высокой гибкостью и может использоваться для хранения сложных структур данных и объектов, что делает его идеальным для моделей машинного обучения и других приложений для расширенного анализа данных. Формат Pickle совместим только с Python, что означает, что его нельзя использовать с другими языками программирования.
write : 0.3262063749716617 sec read : 0.5055029590148479 sec size : 72680026 B
8.Excel
Excel — это собственный формат файлов, разработанный Microsoft для хранения данных электронных таблиц. Это мощный инструмент для анализа и визуализации данных, поддерживающий расширенное форматирование и вычисления. Excel широко используется в бизнесе и финансах благодаря привычному и удобному интерфейсу. Однако файлы Excel могут быть большими, и их загрузка может занимать больше времени, что делает их менее эффективными для больших наборов данных. Кроме того, формат файла является проприетарным и может быть открыт только с помощью программного обеспечения Microsoft Office, что может быть недостатком для совместной работы.
write : 149.02949962503044 sec read : 203.35776358301518 sec size : 56452335 B
Отображение данных

Когда мы создаем гистограмму, сравнивающую форматы файлов с их соответствующим временем чтения, становится очевидным, что форматы файлов, такие как HDF5, Pickle, Parquet и Feather, требуют значительно меньше времени по сравнению с традиционными форматами, такими как Excel, JSON, XML и CSV. Хотя некоторые форматы не были включены в график, важно отметить, что чтение традиционных форматов, таких как CSV, по-прежнему занимает в три раза больше времени по сравнению с более современными форматами, такими как Parquet и Feather, которые можно прочитать всего за 0,6 секунды. .

Когда дело доходит до времени записи, разница в скорости между форматами файлов, такими как Excel, XML и другими, незначительна или едва заметна. Кроме того, с точки зрения размера файла Parquet заметно меньше, чем файлы других форматов. С другой стороны, XML имеет большой объем памяти, занимая больше всего места, за ним следуют файлы JSON.

Когда мы исключаем XML и Excel из нашего анализа, мы видим, что время записи для таких форматов файлов, как Pickle, HDF5, Parquet и Feather, заметно быстрее, чем у других форматов, и похоже друг на друга. Кроме того, с точки зрения размера файла Parquet является наиболее эффективным форматом файлов по сравнению с другими форматами.
Заключение
В зависимости от характера данных и требований проекта одни форматы файлов могут быть более подходящими, чем другие. Однако на определение идеального формата могут влиять различные факторы, специфичные для каждого проекта, такие как размер набора данных, сложность данных и инструменты, используемые для анализа данных.
Лично я использую формат паркет для проектов по науке о данных.
продолжайте учиться, продолжайте писать код!