Вопрос-ответ: история цен на авиабилеты

Спрашивает Андрей:

Есть интересная задача — визуализировать историческую стоимость билета (авиа, жд и т. п.) в зависимости от даты его покупки. Наиболее простым кажется следующий вариант: пользователь выбирает направление (откуда и куда), авиакомпанию-перевозчика, выбирает дату отправления и на графике ему показывается стоимость в зависимости от даты покупки.

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

Как бы вы предложили показать на одном графике (возможно, интерактивном) изменение цены в зависимости от даты покупки билета, даты отправления и перевозчика?

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

Чтобы проиллюстрировать свою мысль я воспользуюсь данными, любезно предоставленными туристическим сервисом «Туту.ру». Это усреднённые данные по покупкам: 5384 цены на билеты Аэрофлота в направлении Москва → Симферополь, 1480 усреднённых по различным авиакомпаниям цен в направлении Москва → Берлин и 1035 усреднённых по авиакомпаниям цен Москва → Тиват. Данные не совсем полные и однородные, тем не менее интересные для изучения.

Чтобы отличать графики между собой используем цветной градиент для разных дат вылета:

Живой прототип: https://ticket-prices.datalaboratory.ru/

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

Изучим внимательно наиболее подробные и однородные данные о перелёте Москва → Симферополь (только Аэрофлот):

Билеты в прошлом летнем сезоне покупались и заранее, и накануне вылета, в среднем за 5 тыс. руб со случайными отклонениями до 7—10 тыс. Осенью плотность «хвоста» слева уменьшилась, покупки совершались ближе к дате вылета, при этом ранняя цена в среднем чуть меньше поздней. Зимой билеты никто не покупал раньше, чем за полтора месяца до вылета, зато цены покупок в последние дни заметно скачут — до 10—15 тыс. Весной проявились ярко выраженные ступеньки (фиксированные тарифы): синие мартовские ступеньки до снижения цен по указанию президента, зелёные апрельские — после.

Интересно, какие закономерности найдут на визуализации внимательные читатели :-)

Присылайте вопросы о визуализации данных на почту: data@datalaboratory.ru, ответы публикуются ежемесячно. При участии Кирилла Беляева и Сергея Долинина. Спасибо Никите Иванову и Наталье Анисимовой за данные для эксперимента.

Поделиться
Отправить
5 комментариев
Тимур Козьменко

Проблема удобства не решена

Иван Пухкал

Какие это билеты? В одну сторону или туда-обратно (на какой срок)? Билеты эконом-класса?

По списку а/к:
МАУ = Международные авиалинии Украины
MIAT = Mongolian Airlines
S7 = Сибирь

Часть из этих авиакомпаний — скорее всего только кодшер-партнёры, без своих рейсов (перелёт «Дельтой» Москва — Берлин через США?).

Цены приведены в рублях. Но для международных рейсов, номированных в евро, стоимость может меняться раз в неделю за счёт валютного курса. Если до прошлого года такими колебаниями можно было бы и пренебречь, то затем изменения стали куда более заметными даже на трёхмесячном интервале.

Андрей

Большое спасибо за ответ.
Но разобраться в визуализации без подсказок, увы, не удалось (да и после чтения статьи вроде тоже не удалось) —
1) Даты сверху визуализации применимы ко всем трем графикам? При наведении на линию графика показывается дата вылета — почему-то я ожидаю, что дата на графике будет совпадать с датой сверху визуализаций.
2) То, что при наведении курсора на один график, выделяются линии и на других графиках, — вводит в заблуждение.
3) Основное — что отражено по оси Х? Количество дней до покупки билета? Пользователю нереально увидеть за сколько дней цена начинает расти, падать, т. к. вообще никакого масштаба не показано.
4) Нет возможности увидеть данные по одной (выбранной пользователем) авиакомпании.

Таня Бибикова

Бывает, заиграешься с данными и упускаешь из виду важные вещи. Спасибо бдительным читателям за подробную и конструктивную критику!

Показали цены при наведении на кривую, подписали горизонтальную ось, подсветили дату вылета на слайдере (заодно реализовали обратную логику — при наведении на слайдер, подсвечиваются соответствующие кривые). Обновлённый прототип: http://ticket-prices.datalaboratory.ru/

Иван, билеты в одну сторону, эконом-класс. Спасибо за информацию о сокращениях, учли её в легенде.

Андрей, у нас были усреднённые данные по авиакомпаниях, поэтому показать данные по одной (кроме первого графика) физически не было возможности. Описанный подход позволяет добавить фильтр по авиакомпании, как и переключалку валют, без ущерба для логики. Эти задачи выходят за рамки рубрики, где мы лишь показываем идеи и возможный ход визуализаторской мысли.

Иван Пухкал

Я пересчитал данные по берлинским рейсам в евро — https://dl.dropboxusercontent.com/u/15410951/airfares/Screen%20Shot%202015-06-04%20at%2020.25.56.png

(1) В той части, где сгруппированы основные траектории изменения цены, изломы стали менее резкими.

(2) На основном графике стала заметнее группировка по цветам.

(3) Но общая картина поменялась мало.

По сезонам — https://dl.dropboxusercontent.com/u/15410951/airfares/mow-ber-seasons.png

Таня Бибикова: mail@infotanka.ru

Спасибо, получилось интересно!

Популярное