Датасет парковок Москвы в Parquet для DuckDB

Датасет парковок Москвы в Parquet для DuckDB

 

Открытый набор из 4,6 млн записей по 210 парковкам Москвы решает задачу получения локальных данных для проверки time-series моделей занятости. Раньше инженеры опирались на устаревший набор UCI Parking Birmingham за три месяца 2016 года. Новый датасет покрывает полтора года с шагом 30 минут и хранится в двух parquet-файлах, которые DuckDB читает напрямую без сервера. Это позволяет российским командам тестировать прогнозы и аналитику на реальных московских показателях вместо зарубежных источников.

 

Состав и схема хранения

occupancy хранит замеры с первичным ключом (time, parking_id). В нём присутствуют время UTC, идентификатор парковки, число свободных обычных мест, свободных мест для инвалидов и occupancy_rate. parking_spots содержит паспорта объектов: названия, адреса, ближайшее метро, координаты WGS-84 и вместимость с разбивкой по типам мест. Два дополнительных поля — feed_silent и last_free_at — отмечают парковки, которые перестали отдавать данные.

Файлы разбиты по месяцам, поэтому можно загружать только нужный период. DuckDB обрабатывает glob-шаблоны occupancy_*.parquet без копирования данных в память. Средняя занятость по всем записям составляет 55,2 %, после отсева молчаливых парковок падает до 51,1 %. Такие цифры дают реалистичную базу для сравнения моделей.

Parquet — это колоночный формат хранения, который экономит место и ускоряет запросы к большим объёмам информации по сравнению с CSV. DuckDB — это встроенная аналитическая база данных, способная работать с parquet-файлами напрямую, без запуска отдельного сервера. Time-series модели — это алгоритмы, которые учитывают последовательность данных во времени, например, чтобы предсказывать загрузку парковок в часы пик. occupancy_rate показывает долю занятых мест и помогает оценивать загруженность. WGS-84 — стандартная система координат, используемая в GPS и картах. feed_silent и last_free_at позволяют быстро отфильтровать неактуальные объекты, что важно при выборе датасета: если проект требует чистых данных без пропусков, эти поля снижают риск ошибок. Разбиение по месяцам упрощает работу с долгосрочными периодами, но требует проверки, хватает ли дискового пространства для всех файлов при полном анализе.

 

Ограничения и дефекты данных

39 парковок из 210 не публикуют реальную занятость: 19 из них всегда показывают ноль свободных мест, остальные замолчали после единичных записей. occupancy_rate принимает отрицательные значения в 19 792 строках за период с мая по декабрь 2025 года — до исправления коллектора. 25,3 % записей равны ровно 100 %, а 7,4 % — ровно 0; регрессионные модели на таких данных смещаются на краях.

Вместимость в parking_spots отражает текущее состояние, а не то, что действовало на момент замера. 74 парковки меняли объявленную ёмкость, поэтому пересчёт occupancy_rate из файла паспортов даёт ошибки. Эти факты нужно учитывать при подготовке выборок, иначе модель будет учиться на константах или некорректных знаменателях.

Перед использованием важно оценить влияние дефектов: отрицательные значения occupancy_rate искажают метрики качества, а постоянные нули или 100 % снижают вариативность данных. Если задача — проверка устойчивости моделей к шуму, такие особенности становятся плюсом. При необходимости точных прогнозов придётся добавить фильтры или исключить проблемные парковки, что сокращает объём выборки. Изменения вместимости усложняют сравнение исторических данных, поэтому для долгосрочных моделей лучше опираться на исходные замеры, а не на пересчёт по справочнику.

 

Применение в российских проектах

Набор заменяет зарубежные датасеты для задач прогнозирования загрузки городских объектов. Российские команды получают данные по местным условиям: плотность, расписание метро, сезонные колебания. Можно сразу фильтровать по feed_silent на любую дату через last_free_at и строить чистые выборки для обучения.

DuckDB позволяет запускать оконные функции и агрегаты прямо над parquet без ETL. Результаты экспортируются в CSV или Arrow для передачи в другие инструменты. Это снижает зависимость от иностранных источников и ускоряет итерации при проверке моделей на московских данных.

При решении брать датасет или нет стоит учитывать локальную специфику: московские парковки отражают реальное поведение водителей в условиях плотной застройки и ограниченного метро. Это даёт преимущество перед зарубежными наборами, где климат и график работы транспорта отличаются. Отсутствие ETL упрощает старт экспериментов, но требует навыков SQL для сложных агрегатов. Если проект включает интеграцию с внешними источниками, наличие координат и станций метро облегчает обогащение признаками без дополнительного сбора.

 

Сравнение с существующими наборами

UCI Parking Birmingham охватывает 30 парковок за три месяца. Новый датасет даёт в 150 раз больше записей и охватывает 210 объектов в течение полутора лет. Шаг 30 минут сохраняет динамику в течение дня, а наличие координат и метро позволяет добавлять внешние признаки без дополнительного сбора.

При этом данные остаются наблюдательными: нет гарантии, что все датчики работают корректно. Документированные дефекты помогают понять, где требуется дополнительная очистка, а где можно использовать сырые значения. Это делает набор пригодным и для учебных задач, и для проверки промышленных пайплайнов.

Выбор в пользу московского датасета оправдан при необходимости учитывать российские факторы — от праздников до погодных аномалий. Больший объём и длительность позволяют тестировать модели на разных временных масштабах, но наблюдательный характер требует осторожности с выводами. Для учебных целей дефекты становятся учебным материалом, а для продакшена — сигналом о необходимости мониторинга качества на этапе сбора.

 

Источник

Это краткий разбор материала Habr. Полная версия с примерами кода, схемами и деталями реализации — в оригинале: Датасет парковок Москвы в Parquet для DuckDB.

Курс по теме — Каталог курсов Школы Больших Данных

 

Архитектура Данных

Код курса
ARMG
Ближайшая дата курса
21 декабря, 2026
Продолжительность
24 ак.часов
Стоимость обучения
76 800