Три способа ускорить работу аналитика данных и сделать неочевидные выводы. На примере рынка общепита
С помощью «Дадаты» аналитик обогатила базу данных, определила наиболее конкурентные локации на рынке общепита и визуализировала плотность заведений на карте. В этой статье покажем, как она это сделала.
- Исходные данные и ограничения
- 1. Вытащить улицы из строки адреса, чтобы работать с ними по отдельности
- 2. Автоматически определить район для улицы, чтобы выяснить наиболее конкурентные локации в городе
- 3. Определить геокоординаты для адресов, чтобы визуализировать плотность объектов на карте
- Результат
- Подключить API стандартизации адресов
Представьте, человек решил открыть кафе в Москве, но пока не понимает, где и какое заведение делать:
- семейный итальянский ресторан или лапшичную на фудкорте;
- в центре или в спальном районе;
- сколько столов поставить;
- с какого времени в какое время открываться и до скольки работать.
Чтобы определиться с расположением и концепцией, полезно изучить рынок общепита — посмотреть, сколько, где и каких заведений уже открыли в городе. Иначе кафе может оказаться невостребованным.
Скажем, человек открыл семейное кафе в месте, где предложили наименьшую цену аренды. Но на этой улице работают бары: семьи туда не заглядывают, кафе пустует.
Или человек открыл кафе на 100 посадочных мест в новом районе. Жителей мало, посетители занимают максимум 30 столов. В итоге владелец платит аренду за бесполезную площадь.
Изучать рынок общепита помогает аналитик данных. Он собирает информацию о заведениях, ищет закономерности в найденных данных и приносит выводы владельцу будущего кафе. Как раз такую задачу получила Настя Березина — будущий аналитик.
1. Вытащить улицы из строки адреса, чтобы работать с ними по отдельности
Заказчики попросили аналитика найти 10 улиц Москвы с наибольшим числом заведений.
Сложность в том, что в исходной базе данных нет колонки с улицами — только с целыми адресами. Поэтому сперва нужно выделить улицу из адреса. Часто такую задачу решают в Excel — разделяют строку адреса на колонки по запятой между компонентами: городом, улицей и номером дома. Но для исходной базы объектов общепита такой способ не годился, потому что адреса там записали в разных форматах.
Скажем, аналитик разделит по запятой адрес «город Москва, Зеленоградская улица, дом 11». Во второй колонке окажется «Зеленоградская улица».
Но в базе также попадаются адреса типа «город Москва, город Зеленоград, Яблоневая аллея, дом 2». Если разделить такой адрес по запятой, во второй колонке окажется «город Зеленоград» вместо «Яблоневой аллеи». С такой базой невозможно работать.
Настя, аналитик из нашей статьи, выделила улицу из адреса с помощью регулярного выражения. Это специальный код, который удалил из строк адреса все, кроме улицы.
Такую задачу можно решить с помощью API-метода «Стандартизация адресов» «Дадаты». Он разделит адреса в базе на компоненты — быстрее самописных формул и точнее регулярных выражений. Так аналитик данных сэкономит время и избежит ошибок.
В регулярном выражении Настя перечислила синонимы слова «улица» — «переулок», «шоссе», «проезд» и т. д. Это нужно, чтобы вместе с названием улицы выделить ее тип — не «Абрамцевская», а «Абрамцевская улица».
При этом аналитик упомянула не все типы улиц, которые встречаются в российских адресах. Не хватает, например, «спуска». Будь в базе адрес «г Омск, 4-й Ремесленный спуск, д 71», регулярное выражение вернуло бы название без типа улицы — «4-й Ремесленный» вместо «4-й Ремесленный спуск».
«Дадата» же знает все типы улиц, которые записали в ФИАС — базу адресов, которую составляет налоговая. Это самый полный перечень российских адресов из общедоступных. Поэтому сервис без проблем выделит название улицы с ее типом:
2. Автоматически определить район для улицы, чтобы выяснить наиболее конкурентные локации в городе
Заказчики также попросили определить районы Москвы, в которых расположены улицы с наибольшим числом заведений. Так владелец кафе узнает конкурентные локации, в которых, возможно, не стоит открывать очередное заведение.
В исходной базе нет районов, нужно их искать.
Например, вручную — в картах «Яндекса». Заказчики попросили узнать районы для 10 улиц, поэтому задача не займет много времени. А вот на механический перебор, скажем, 1000 улиц уйдут часы работы.
Или найти в интернете список улиц с привязкой к районам и обогатить данными исходную базу.
Аналитик Настя искала районы автоматически — с помощью API-метода «Стандартизация адресов» «Дадаты». Он приводит адреса к единому формату, исправляет ошибки и обогащает дополнительной информацией. В том числе находит район города:
К API Настя обращалась на языке Python — взяла готовый пример запроса из документации и дописала часть кода. Так, чтобы в ответе «Дадата» выводила только район города вместо 200 строк информации об адресе.
3. Определить геокоординаты для адресов, чтобы визуализировать плотность объектов на карте
Настя решила пойти дальше — найти геокоординаты заведений на самых популярных улицах и показать объекты общепита на карте.
В первой части задания аналитик выяснила районы с наибольшим числом заведений — так попросил заказчик. Но тут же заметила, что эта информация может подтолкнуть бизнесмена к поспешным выводам.
В Москве улицы часто тянутся через десяток районов. Например, Проспект Мира проходит сразу через районы Марьина Роща, Ростокино, Алексеевский, Мещанский, Останкинский, Свиблово и Ярославский.
Если взять кафе на Проспекте Мира и учесть его в каждом районе, через которые проходит улица, получится искаженная статистика. Будто заведение работает одновременно в семи районах вместо одного.
В результате аналитик завысит число мест в этих районах и порекомендует не открывать там кафе из-за высокой конкуренции. На деле же окажется, что большинство заведений на Проспекте Мира работают в Мещанском районе, а в Алексеевском конкуренция низкая — можно открывать новое кафе.
Поэтому для наглядности полезно составить график плотностей — отметить заведения на карте и посмотреть, как места распределены по улице.
Искать координаты вручную — не вариант. На популярных улицах работает около 1500 заведений. Понадобятся десятки часов, чтобы определить широту и долготу для каждого.
Настя нашла координаты объектов общепита автоматически с помощью API-метода «Стандартизация адресов» «Дадаты» — он определяет широту и долготу, на которой расположены дома:
Аналитик написала цикл, который отправлял адреса заведений «Дадате», получал координаты и записывал в базу данных. Затем загрузила широту и долготу в Plotly — библиотеку для Python, которая отображает точки на карте. Получился график плотностей:
Результат
Аналитик Настя Березина выяснила топ-10 улиц в Москве по количеству заведений. И с помощью «Дадаты» определила районы, в которых работает большинство объектов общепита:
- проспект Мира — Марьина роща,
- Профсоюзная улица — Ясенево,
- Ленинградский проспект — Сокол,
- Пресненская набережная — Пресненский,
- Варшавское шоссе — Нагорный,
- Ленинский проспект — Теплый Стан,
- проспект Вернадского — Раменки,
- Кутузовский проспект — Дорогомилово,
- Каширское шоссе — Орехово-Борисово Северное,
- Кировоградская улица — Чертаново Южное.
Интересно, что в центре расположены только три района из списка: Марьина Роща, Пресненский и Дорогомилово. Большинство же заведений работают в районах на окраине. Возможно, это нетуристические места, например, фаст-фуды и столовые. Аналитику предстоит это выяснить.
Подключить API стандартизации адресов
«Стандартизация» автоматически проверит адреса, которые уже лежат в базе. Сервис:
- исправляет ошибки в адресах;
- приводит адреса к единому формату;
- разбивает адреса по отдельным полям (регион, город, улица, дом, квартира);
- рассчитывает корректный индекс по данным Почты России;
- определяет координаты;
- показывает округ и район города, ближайшее метро, площадь и стоимость квартиры;
- достает коды КЛАДР, ФИАС, ОКАТО, ОКТМО и ИФНС.
Цена — 15 копеек за запрос. Например, базу в 1000 адресов «Стандартизация» очистит за 150 ₽.