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

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

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

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

Чтобы принимать обоснованные решения о вариантах питания, нужны исчерпывающие данные и объективная информация. Именно здесь вступает в игру API Google Places, предоставляющий разработчикам и пользователям обширную информацию о компаниях, включая обзоры, рейтинги, фотографии и многое другое. Используя возможности этого API, становится возможным автоматизировать процесс поиска лучшей пиццерии в городе!

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

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

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

Расходы

К сожалению, использование Places API платное. Однако (для личного использования) это довольно близко к реальности. Для доступа к нему вам потребуется учетная запись в Google Cloud Platform (GCP) и активируйте ее там. При регистрации вы получите кредит в размере 300 долларов. Google также предоставляет вам бесплатный кредит в размере 200 долларов США каждый месяц!

После создания проекта GCP перейдите в раздел API и службы > Включить API и службы инажмите большую кнопку с плюсом. В подразделе «Карты» выберите Places API (не новый) и включите его, что также создаст для вас ключ API.

Запросы текстового поиска возвращают список мест, но не поддерживают указание возвращаемых полей. Запросы текстового поиска возвращают подмножество поддерживаемых полей данных. Плата взимается за запрос Text Search, начиная с 0,032 USD за каждый, а также за все SKU типа данных (Основные данные, Контактные данные и Данные об атмосфере) [1]

Согласно Jordan Bean и моему собственному опыту, вы будете платить менее 40 долларов за 1000 запросов. Например. в моем примере среднего немецкого города (более 180 тыс. жителей) я запускал скрипт 3 x 17 = 51 раз (тип места x почтовые индексы) + 235 отдельных звонков для сбора дополнительных данных. В целом это привело к 386 звонкам и общей стоимости менее 15 долларов.

Подход

Для демонстрации процесса я выбрал свой родной город: Потсдам. Красивое историческое место с множеством замков всего в 30 минутах езды от Берлина.

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

Теперь, когда мы выполнили все требования и предоставили все входные данные, мы можем построить запрос (строка 9) и позволить ему выполнить итерацию по всем типам мест, а затем по всем почтовым индексам:

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

Как вы можете видеть (строки 59–66), результатом является окончательный кадр данных, который включает в себя некоторые основные бизнес-данные, а также средний рейтинг и количество оценок пользователей.

Я рекомендую потратить некоторое время и поэкспериментировать с построенным поисковым запросом. Добавьте к нему текстовые ограничения, коды регионов или уровни областей и посмотрите, что даст вам наилучшие результаты, прежде чем запускать окончательный сценарий. Если вы ищете больше информации о построении URL-адреса [3], это хорошо написанный ресурс.

Преобразование данных

К счастью, наш csv уже очень чистый. Но поскольку Потсдам находится так близко к Берлину, некоторые результаты мне не интересны, и нам нужно их отфильтровать. Сначала посмотрим, как адреса отображаются в таблице.

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

Сбор дополнительных данных

placeID, полученный нами в ходе предыдущего запуска, является ключевым фактором для извлечения дополнительных данных. Теперь мы запускаем еще один запрос сведений о месте, чтобы собрать исчерпывающую информацию для каждого ресторана в отдельности, например, его полнотекстовые обзоры. В ресурсе [1] в разделе Данные об атмосфере вы можете найти дополнительные поля для извлечения. Используя ту же схему, что показана ниже, их легко добавить в свой собственный скрипт.

Обратите внимание на строку 7. Там язык специально установлен на немецкий, а атрибут «последний» играет роль для сбора самых новых отзывов. Говоря об этом, в следующем блоке кода мы создаем отдельный кадр данных обзора с идентификатором места, выступающим в качестве первичного ключа. К сожалению, есть одно существенное ограничение:

Чтобы иметь доступ к более чем 5 отзывам с помощью Google API, вам необходимо приобрести Премиум-доступ к данным у Google. Этот премиальный план предоставит вам доступ ко всем видам дополнительных точек данных [2]

Поместите этот блок в цикл for, перебирающий все идентификаторы мест. Отбросьте дубликаты для двух полученных фреймов данных и экспортируйте их в csv. Теперь у нас есть чистая база данных — по сути, длинный список — всех пиццерий и соответствующих им соответствующих данных.

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

Но как открыть для себя лучшие кулинарные изыски и отправиться в гастрономические приключения?

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

[1] Использование и выставление счетов Places API | Google для разработчиков

[2] https://stackoverflow.com/questions/39223719/to-get-more-than-5-reviews-from-google-places-api

[3] https://towardsdatascience.com/how-to-use-the-google-places-api-for-location-analysis-and-more-17e48f8f25b1