В каком формате хочешь работать?

«В каком формате хочешь работать?» — вопрос из категории Софт-скиллы, который задают на 26% собеседований Data Scientist / ML Инженер. Ниже — развёрнутый пример ответа, который можно адаптировать под свой опыт.

Ответ

Мой выбор формата зависит от конкретной задачи в конвейере данных:

  • Для исследовательского анализа и быстрого прототипирования я предпочитаю работать с pandas DataFrames в Python. Это де-факто стандарт для анализа, предоставляющий богатый API для манипуляций.

    import pandas as pd
    df = pd.read_csv('data.csv')
    # Быстрая фильтрация, агрегация, визуализация
    filtered_data = df[df['sales'] > 1000].groupby('region').sum()
  • Для долгосрочного хранения и обмена большими наборами данных между различными системами (Spark, Dask) я выбираю Parquet. Это колоночный формат с эффективным сжатием и поддержкой схемы, что ускоряет чтение и уменьшает затраты на хранение.

    df.to_parquet('data.parquet', compression='snappy')
    df_spark = spark.read.parquet('data.parquet')
  • Для конфигураций и обмена небольшими структурированными данными (например, параметры модели) я использую JSON или YAML из-за их человекочитаемости и широкой поддержки.

  • Для сериализации объектов Python внутри одного приложения (кэширование, checkpoint-ы) иногда использую pickle, но с осторожностью из-за проблем с версионностью и безопасностью.

Идеальный рабочий процесс: сырые данные в формате Parquet → обработка и анализ в pandas/Spark → результаты в Parquet или JSON для отчёта.