Веб-парсинг, Foursquare API, Folium Map и многое другое

В рамках финального IBM Capstone Project мы узнаем, через что проходят специалисты по данным в реальной жизни. Цели заключительных заданий состояли в том, чтобы определить бизнес-проблему, найти данные в Интернете и использовать данные о местоположении Foursquare для сравнения различных районов в пределах округов (муниципалитетов) Токио (выбор города зависит от студентов), чтобы выяснить, какие район подходит для открытия ресторанного бизнеса (идея также зависит от отдельных студентов). Готовясь к выполнению задания, я шаг за шагом прохожу этапы проектирования задачи, подготовки данных и окончательного анализа. Подробные коды и изображения приведены в Github, а ссылку можно найти в конце сообщения.

1. Обсуждение и предыстория бизнес-проблемы:

Постановка проблемы: перспективы ресторана для обеда, недалеко от офисных помещений в Токио, Япония.

Токио, где я сейчас нахожусь, - самый густонаселенный мегаполис в мире. В настоящее время Токио занимает 3-е место в мировом индексе экономической мощи. Это определенно одно из лучших мест для открытия нового бизнеса.

В дневное время, особенно в утренние часы и в обеденные часы, офисные помещения предоставляют огромные возможности для ресторанов. По разумной цене (один обед 8 $) магазины обычно всегда полны в обеденные часы (с 11:00 до 14:00), и, учитывая этот сценарий, мы рассмотрим преимущества и недостатки открытия ресторана для завтрака и обеда в офисе с высокой плотностью посетителей. места. Обычно норма прибыли для приличного ресторана находится в пределах 15-20%, но может доходить даже до 35%, как обсуждалось здесь. Ядро Токио состоит из 23 районов (муниципалитетов), но позже я остановлюсь на 5 самых загруженных деловых районах Токио - Тиёда (千代 田 区), Тюо (中央 区), Синдзюку (新宿 区), Сибуя (渋 谷) 区) и Синагава (子 区), нацеленные на ежедневных офисных работников.

Мы рассмотрим каждый этап этого проекта и рассмотрим их отдельно. Сначала я обрисовываю начальную подготовку данных и описываю будущие шаги, чтобы начать битву кварталов в Токио.

Целевая аудитория

Какой тип клиентов или группа людей будут заинтересованы в этом проекте?

  1. Деловой персонал, который хочет инвестировать или открыть ресторан. Этот анализ станет исчерпывающим руководством по открытию или расширению ресторанов, ориентированных на большой круг офисных работников в Токио в обеденные часы.
  2. Фрилансер, которому нравится иметь собственный ресторан в качестве побочного бизнеса. Этот анализ даст представление о том, насколько выгодно открывать ресторан и каковы плюсы и минусы этого бизнеса.
  3. Новые выпускники, чтобы найти приемлемое место для обеда / завтрака рядом с офисом.
  4. Начинающие специалисты по данным, которые хотят внедрить некоторые из наиболее часто используемых методов исследовательского анализа данных, чтобы получить необходимые данные, проанализировать их и, наконец, научиться рассказывать истории.

2. Подготовка данных:

2.1. Соскоб Токио Wards Table из Википедии

Сначала я использую страницу Special Wards of Tokyo из Wiki, чтобы вырезать таблицу и создать фрейм данных. Для этого я использовал запросы и библиотеку Beautifulsoup4, чтобы создать фрейм данных, содержащий названия 23 районов Токио, области, населения и 1-го крупного округа. Начнем, как показано ниже -

После небольших манипуляций кадр данных получается, как показано ниже -

2.2. Получение координат основных районов: Клиент Geopy

Следующая задача - получить координаты этих 23 основных районов с помощью класса геокодера клиента Geopy. Используя фрагмент кода, как показано ниже -

Как вы можете видеть, 4 координаты совершенно неверны (Бункё, Кото, Ота, Эдогава), что связано с тем, что названия районов написаны немного иначе, чем в этом фрейме данных (например, Хонго - Хонго), поэтому мне пришлось заменить эти координаты значениями, полученными из поиска Google. Немного поигравшись с пандами, я смог получить один хорошо организованный фрейм данных, как показано ниже -

2.3. Средняя цена земли в основных районах Токио: анализ веб-страниц

Еще один фактор, который поможет нам позже решить, в каком районе лучше всего открыть ресторан, - это средняя цена земли для 23 приходов. Я получаю эту информацию, просматривая веб-страницу рыночная стоимость земли в Токио, аналогично предыдущей странице Wiki. Поскольку я хочу рассмотреть 5 самых загруженных бизнес-муниципалитетов Токио, упомянутых в разделе 1, фрейм данных выглядит следующим образом.

2.4. Использование данных о местоположении Foursquare:

Данные Foursquare очень обширны и служат источником данных о местоположении для Apple, Uber и т. Д. Для решения этой бизнес-задачи я использовал в качестве части задания Foursquare API для получения информации о популярных местах в этих 5 основных районах Токио. Количество возвращаемых популярных мест зависит от наибольшей посещаемости и, следовательно, от времени, когда был сделан звонок. Таким образом, мы можем получить разные популярные места в зависимости от разного времени дня. Вызов возвращает файл JSON, и нам нужно превратить его во фрейм данных. Здесь я выбрал 100 популярных мест для каждого крупного района в радиусе 1 км. Ниже приведен фрейм данных, полученный из файла JSON, возвращенного Foursquare.

3. Визуализация и исследование данных:

3.1. Библиотека Folium и карта-буклет:

Folium - это библиотека на языке Python, которая может создавать интерактивную карту листовок с использованием координатных данных. Поскольку меня сначала интересуют рестораны как популярные места, я создаю фрейм данных, в котором столбец ‘Venue_Category’ в предыдущем фрейме данных содержит слово «Ресторан». Я использовал следующий фрагмент кода -

Следующим шагом будет использование этого фрейма данных для создания карты листовок с Folium, чтобы увидеть распределение наиболее посещаемых ресторанов в 5 основных районах.

С фрагментом кода над листовкой карта выглядит так, как показано ниже.

3.2. Исследовательский анализ данных:

Есть 134 уникальных категории заведений, и рестораны Рамен возглавляют чарты, как мы можем видеть на графике ниже.

Теперь, когда это напоминает Рамен, определенно пора сделать перерыв.

После вкусного рамена давайте вернемся к изучению данных еще немного. Чтобы узнать о 5 лучших заведениях каждого района, мы действуем следующим образом

  • Создайте фрейм данных с pandas one hot encoding для категорий мест проведения.
  • Используйте pandas groupby в столбце «Район» и получите среднее значение для категорий мест с горячим кодированием.
  • Перенесите фрейм данных на шаге 2 и расположите в порядке убывания.

Давайте посмотрим на фрагмент кода ниже -

Приведенный выше код выводит 5 лучших заведений каждого района -

Из нескольких фреймов данных, которые мне пришлось создать для исследовательского анализа данных, используя один из них, я построил график, в каком районе есть рестораны среди наиболее часто посещаемых мест, и район Нагатачо из района Тиёда занимает первое место с 56 ресторанами.

Мы также можем посмотреть на скрипичные сюжеты, которые используются для представления категориальных данных, и я использовал библиотеку seaborn, чтобы показать распределение 4 основных типов ресторанов в разных районах:

Как только мы получим достаточно широкий обзор различных типов заведений и, в частности, ресторанов в 5 основных районах Токио, пришло время использовать кластеризацию районов с использованием K-средних.

4. Кластеризация районов

Наконец, мы пытаемся сгруппировать эти 5 районов на основе категорий площадок и использовать кластеризацию K-средних. Таким образом, наши ожидания будут основаны на сходстве категорий объектов, эти районы будут сгруппированы. Я использовал фрагмент кода ниже -

Мы можем представить эти 3 кластера на листовой карте, используя библиотеку Folium, как показано ниже -

5. Результаты и обсуждение:

Мы подошли к концу анализа, где мы получили краткий обзор 5 основных районов Токио, и, поскольку бизнес-проблема началась с преимуществ и недостатков открытия обеденного ресторана в одном из самых оживленных районов, исследование данных было в основном сосредоточился на ресторанах. Я использовал данные из веб-ресурсов, таких как Википедия, библиотек Python, таких как Geopy, и Foursquare API, чтобы создать очень реалистичный сценарий анализа данных. Мы выяснили, что -

  • Рестораны Рамен возглавляют хит-парады самых популярных заведений в 5 районах.
  • В районе Нагатачо в районе Тиёда и Нихомбаши в районе Тюо преобладают рестораны как наиболее распространенные места проведения, тогда как в районах Сибуя и Синдзюку преобладают бары, пабы и кафе как наиболее распространенные места встреч.
  • В Нагатачо есть максимальное количество ресторанов как наиболее распространенное место, тогда как в районе Сибуя их меньше всего.
  • Поскольку кластеризация была основана только на наиболее распространенных местах в каждом районе, Синдзюку, Сибуя попадают в один кластер, а Нагатачо и Нихонбаши - в другой кластер. Синагава отделен от обоих этих кластеров, поскольку удобные магазины выделяются как наиболее распространенное место (с очень высокой частотой).

Согласно этому анализу, район Синагава будет представлять наименьшую конкуренцию будущему ресторану для обеда, так как круглосуточный магазин является наиболее распространенным местом в этом районе, а количество ресторанов в качестве общего места очень низкое по сравнению с остальными районами. Также из собранных в Интернете данных видно, что средняя цена на землю в Синагаве и его окрестностях намного дешевле по сравнению с районами, расположенными недалеко от центра Токио. Так что определенно этот регион потенциально может стать целью для открытия качественных ресторанов. Некоторые недостатки этого анализа - кластеризация полностью основана на наиболее распространенных площадках, полученных из данных Foursquare. Поскольку цена земли, расстояние до ближайших станций, количество потенциальных клиентов, преимущества и недостатки того, что Синагава является портовым регионом, могут сыграть важную роль, и, таким образом, этот анализ определенно далеко не окончательный. Тем не менее, это, безусловно, дает нам очень важную предварительную информацию о возможностях открытия ресторанов в основных районах Токио. Кроме того, еще одна ловушка этого анализа может заключаться в рассмотрении только одного крупного района в каждом районе Токио, поскольку учет всех районов, находящихся под 5 основными районами, даст нам еще более реалистичную картину. Кроме того, эти результаты также потенциально могут измениться, если мы будем использовать другие методы кластеризации, такие как DBSCAN. Я написал отдельный пост о детальной теории DBSCAN и о том, как с ее помощью кластеризовать пространственную базу данных.

6. Заключение

Наконец, чтобы завершить этот проект, мы получили небольшое представление о том, как выглядят реальные проекты в области науки о данных. Я использовал некоторые часто используемые библиотеки Python для очистки веб-данных, использовал Foursquare API для исследования основных районов Токио и видел результаты сегментации районов с использованием карты листовок Folium. Подробно обсуждается возможность такого анализа в реальной деловой проблеме. Также упоминаются некоторые недостатки и возможность улучшений для представления еще более реалистичных изображений. Наконец, поскольку мой анализ был в основном сосредоточен на возможностях открытия ресторанов, ориентированных на огромный пул офисных работников, некоторые из полученных результатов на удивление оказались именно такими, как я ожидал после пяти лет пребывания в Токио. Я вижу особенно кафе, бары, пабы, которые чаще всего встречаются в районе Синдзюку и Сибуя, и японские рестораны в районе Нихомбаси, район Нагатачо! Надеюсь, этот вид анализа послужит вам руководством к решению более реальных задач с помощью науки о данных.

Оставайтесь сильными и ура !!

Найдите код в Github.

Найдите меня в Linkedin.