В каком формате хранить данные?
Xочу провести небольшое исследование на тему трудности/легкости произношения последовательности из трех согласных. Для этого, я сделал скрипт, который генерирует случайный набор из 5 букв, спрашивает пользователя, насколько сложно ему было произнести слово, а затем печатает небольшую таблицу с данными следующего вида:
В каком формате и в какой форме будет лучше всего сохранить эти данные так, чтобы потом было легко и удобно все это дело извлекать и смотреть на возможные корреляции?
Ответы (1 шт):
Обрабатывать табличные данные удобнее всего в Pandas.
Pandas умеет работать со многими форматами хранения данных, но выбор лучшего формата зависит от многих параметров.
Например если вы часто работаете с типами данных данных, которые Pandas не умеет парсить неявно, например с date, datetime, interval, bool, etc. то такие данные лучше хранить в бинарных форматах (смотрите ниже) или в БД, чтобы избежать повторного парсинга указанных выше типов данных.
Вот осоновные форматы хранения данных, которые поддерживаются в Pandas и их плюсы и минусы:
Python Pickle- плюсы:
- быстрое чтение & запись
- данные хранятся с нужными типами данных - не нужно их повторно парсить
- минусы:
- может быть несовместимо с новыми версиями Python/Pandas
- работать с этим форматом данных можно только в Python
- плюсы:
CSV,TSV,fixed-width format- плюсы:
- совместимость - можно работать с любым ЯП / БД
- легкость работы и обработки (можно использовать утилиты командной строки и текстовые редакторы)
- минусы:
- необходимость каждый раз парсить данные, чтобы распознать числа и строки. Столбцы с датами нужно явно указывать при парсинге.
- медленное чтение и запись
- нет поддержки быстрых кодеков сжатия (поддерживаются: ‘gzip’, ‘bz2’, ‘zip’, ‘xz’)
- плюсы:
Excel- плюсы:
- удобно вручную проверять / редактировать данные в Excel
- совместимость: многие сторонние ЯП и БД поддерживают работу с Excel файлами
- можно красиво оформить данные - заморозить имена столбцов, добавить автофильтры и т.д.
- минусы:
- часто даты и время парсятся неправильно
- максимальное число строк: 1,048,576 - для серъезных проектов этого слишком мало
- очень медленная запись, не очень быстрое чтение
- невозможно эффективно читать/писать данные по частям/кускам
- плюсы:
HDF5- плюсы:
- хранение данных в бинарном виде. Ттип данных при этом запоминается и не нужно повторно парсить такие данные
- очень быстрое чтение и запись
- данные хранятся с нужными типами данных - не нужно их повторно парсить
- поддержка быстрого кодека сжатия
BLOSC - поддержка индексирования многих столбцов
- возможность поиска по индексам - т.е. можно фильтровать данные, не читая весь датасет в память
- совместимость: (C, C++, Java, Python, C# and Fortran)
- минусы:
- мне неизвестны
- плюсы:
Parquet- плюсы:
- самый быстрый из перечисленных форматов
- основан на Apache Arrow - быстро и активно развивается
- данные хранятся с нужными типами данных - не нужно их повторно парсить
- поддержка одного из самых быстрых кодеков сжатия -
snappy - совместимость: (C++, Java, Python, PHP)
- поддержка партиционирования данных
- минусы:
- невозможность дописывать данные в существующий Parquet файл из Pandas - единственный серъезный минус данного формата. Надеюсь его скоро устранят.
- формат достаточно молодой, поэтому иногда не хватает некоторых фич или некоторые
фичи быстро устаревают (
deprecated)
- плюсы:
SQL DB(используяSQLAlchemyв качестве прослойки)- плюсы:
- все те плюсы, которые дает нам используемая СУБД
- читать данные можно используя SQL - т.е. мы можем легко фильтровать данные, обхединять данные из многих таблиц и т.д.
- данные хранятся с нужными типами данных - не нужно их повторно парсить
- минусы:
- для некоторых БД при сохранении столбцов со строками, Pandas сохранят их с типом CLOB, что обычно очень медленно работает. Решается при помощи параметра
df.to_sql(..., dtypes={...})
- для некоторых БД при сохранении столбцов со строками, Pandas сохранят их с типом CLOB, что обычно очень медленно работает. Решается при помощи параметра
- плюсы:
Google BigQuery- плюсы:
- все плюсы, которые дает нам
Google BigQuery - To Be Done...
- все плюсы, которые дает нам
- минусы:
- To Be Done...
- плюсы:
Amazon S3- плюсы:
- все плюсы, которые дает нам
Amazon S3 - To Be Done...
- все плюсы, которые дает нам
- минусы:
- To Be Done...
- плюсы:
ORC- плюсы:
- To Be Done...
- минусы:
- To Be Done...
- плюсы:
Stata- плюсы:
- To Be Done...
- минусы:
- To Be Done...
- плюсы:
