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

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

1. Описание бизнес-проблемы и обсуждение предыстории (вводный раздел):

Постановка проблемы: перспективы открытия индийского ресторана в Торонто, Канада.

Торонто, столица провинции Онтарио, - самый густонаселенный город Канады. Его разнообразие отражено в этнических кварталах Торонто, таких как Чайнатаун, Корсо Италия, Гриктаун, Кенсингтонский рынок, Корейский квартал, Маленькая Индия, Маленькая Италия, Маленькая Ямайка, Маленькая Португалия и Ронсесвальес. Один из самых дружелюбных к иммигрантам городов в Северной Америке, где более половины всего индийского населения Канады проживает в Торонто, это одно из лучших мест для открытия индийского ресторана.

В этом проекте мы шаг за шагом решим, стоит ли открывать индийский ресторан. Мы анализируем районы в Торонто, чтобы определить наиболее прибыльный район, поскольку успех ресторана зависит от людей и атмосферы. Поскольку мы уже знаем, что в Торонто проживает большее количество индейцев, чем в любом другом городе Канады, было бы неплохо открыть ресторан здесь, но нам просто нужно убедиться, является ли это прибыльной идеей или нет. Если да, то где его разместить, чтобы он приносил больше прибыли владельцу.

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

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

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

2. Сбор и очистка данных:

2.1 Источники данных

а) Я использую вики-страницу Список почтовых индексов Канады: M (https://en.wikipedia.org/wiki/List_of_postal_codes_of_Canada:_M), чтобы получить всю информацию о районах, существующих в Торонто. На этой странице указан почтовый индекс, район и названия всех районов Торонто.

б) Затем я использую CSV-файл https://cocl.us/Geospatial_data, чтобы получить все географические координаты окрестностей.

c) Чтобы получить информацию о распределении населения по этнической принадлежности, я использую вики-страницу Демография Торонто (https://en.m.wikipedia.org/wiki/Demographics_of_Toronto#Ethnic_diversity). Используя эту страницу, я собираюсь определить районы, которые густо населены индейцами, поскольку это может быть полезно для определения подходящего района для открытия нового индийского ресторана.

г) Чтобы получить местоположение и другую информацию о различных местах в Торонто, я использую API-интерфейс Foursquare. Используя исследовательский API Foursquare (который дает рекомендации по местам проведения), я собираю подробную информацию о местах, имеющихся в Торонто, и собираю их названия, категории и местоположения (широта и долгота).

Из Foursquare API (https://developer.foursquare.com/docs) я получил следующее для каждого места проведения:

  • Название: Название места проведения.
  • Категория: тип категории, определенный в API.
  • Широта: значение широты места проведения.
  • Долгота: значение долготы места проведения.

2.2 Очистка данных

а) Удаление таблицы районов Торонто из Википедии

Очистил следующую страницу Википедии «Список почтовых индексов Канады: M», чтобы получить данные о Торонто и его окрестностях.

Предположения, сделанные для достижения следующего DataFrame:

  • Dataframe будет состоять из трех столбцов: PostalCode, Borough и Neighborhood.
  • Будут обработаны только ячейки, которым назначен район. Не назначенные районы игнорируются.
  • В одной области почтового индекса может существовать более одного района. Например, в таблице на странице Википедии вы заметите, что M5A указан дважды и имеет два района: Харборфронт и Риджент-парк. Эти две строки будут объединены в одну с соседями, разделенными запятой, как показано в строке 11 в приведенной выше таблице.
  • Если в ячейке есть район, но район не назначен, то этот район будет таким же, как и район.

Википедия - пакет используется для очистки данных из вики.

После некоторой чистки мы получили надлежащий фреймворк с информацией о почтовом индексе, районе и районе.

б) Добавление географических координат к районам

Следующим важным шагом является добавление географических координат к этим районам. Для этого я извлекаю данные, представленные в csv-файле геопространственных данных, и объединяю их с существующим фреймом данных о районе, объединяя их оба на основе почтового индекса.

Я переименовываю столбцы в соответствии с существующим фреймом данных, сформированным из вики-страницы 'Список почтовых индексов Канады: M'. После этого я объединяю оба фрейма данных в один, объединяя почтовый индекс .

c) Вычеркнуть распределение населения из Википедии

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

Скопировал следующую страницу Википедии «Демография Торонто», чтобы получить данные о Торонто и его окрестностях. По сравнению со всеми районами в Торонто ниже в данных районах было только значительное количество индейцев. Мы изучаем население этих районов, чтобы определить густонаселенные районы с индийским населением.

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

г) Получите данные о местоположении с помощью Foursquare

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

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

3.1 Библиотека Folium и карта листовок

Folium - это библиотека на языке Python, я использую ее для рисования интерактивной карты листовок с использованием координатных данных.

3.2 Отношения между районом и индийским рестораном

Сначала мы извлечем столбец Район и Индийский ресторан из приведенного выше фрейма данных Торонто для дальнейшего анализа:

Фрагмент кода

После выполнения горячего кодирования pandas one для категорий мест, давайте объединим этот фрейм данных с фреймом данных Торонто с информацией о широте и долготе в районе. Наконец, извлеките только значения индийских ресторанов вместе с информацией о районе.

Давайте попробуем нарисовать какой-нибудь график, используя приведенный выше фрейм данных:

С помощью этого скрипичного сюжета мы можем идентифицировать районы с густонаселенными индийскими ресторанами. Он составлен с использованием библиотеки seaborn, чтобы показать распределение индийских ресторанов в разных районах города.

Давайте также визуализируем окрестности с индийскими ресторанами:

3.3 Отношения между окрестностями и индийским населением

Еще одна ключевая особенность - распределение индийской толпы в каждом районе. Давайте проанализируем районы и определим районы с наибольшим количеством индийского населения.

Для этого мы объединяем данные всего района с использованием вики-страницы с этническим населением и извлекаем только индейское население для каждого района.

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

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

3.4 Отношения между индийским населением и индийским рестораном

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

4. Прогностическое моделирование:

4.1 Кластеризация районов Торонто:

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

Фрагмент кода -

После анализа методом локтя с использованием показателя искажения и квадратичной ошибки для каждого значения K, похоже, наилучшим значением является K = 6.

Кластеризация района Торонто с помощью K-средних с K = 6

4.2 Изучите кластеры:

Всего у нас 6 кластеров, например 0,1,2,3,4,5. Давайте рассмотрим одно за другим.

Кластер 0 содержит все районы, в которых меньше всего индийских ресторанов. На карте отображается красным цветом.

Кластер 1 включает районы, малонаселенные индийскими ресторанами. На карте он показан фиолетовым цветом.

Кластеры 2 и 4 не имеют строк, что означает, что рядом с этими центроидами не было точек данных или окрестностей.

Кластер 3 включает все районы со средней плотностью населения индийскими ресторанами. На карте он показан синим цветом.

Кластер 5 включает все районы, густо населенные индийскими ресторанами. На карте отображается оранжевым цветом.

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

5.1 Результаты

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

  • В этих 11 районах мы определили, что только в районах Центральный Торонто, Даунтаун Торонто, Восточный Торонто, Восточный Йорк, Северный Йорк и Скарборо есть большое количество индийских ресторанов с помощью скрипичных участков между количеством индийских ресторанов в районе Торонто.
  • Во всех поездках, Скарборо-Гилдвуд, Парк Скарборо-Руж, Центр Скарборо, Север Скарборо, Река Хамбер-Блэк-Крик, Восточная долина Дона, Юго-запад Скарборо, Север долины Дона и Скарборо-Азенкур являются густонаселенными индейцами.
  • С помощью кластеров, исследующих и скрипичных сюжетов, похоже, что Даунтаун Торонто, Центральный Торонто, Восточный Йорк уже густо населены индийскими ресторанами. Так что лучше оставить эти районы и рассмотреть в качестве места расположения нового ресторана только Скарборо, Восточный Торонто и Северный Йорк.
  • После тщательного рассмотрения будет хорошей идеей открыть новый ресторан индийской кухни в районе Скарборо, так как в нем проживает большое количество индийцев, что дает возможность большему количеству клиентов и более низкую конкуренцию, поскольку в окрестностях очень мало индийских ресторанов.

5.2 Обсуждение

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

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

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

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

Найдите код в github, но для просмотра используйте nbviewer вместе с github url.

Найди меня в LinkedIn!