En el presente repositorio se lleva a cabo un estudio de mercado de restaurantes de comida de mar en los estados pertenecientes a la costa sudeste de los Estados Unidos de América, Florida, Maryland, Georgia, Carolina del Norte, Carolina del Sur y Virginia. Los resultados arrojados por nuestro trabajo se ven reflejados en un Dashboard diseñado en Looker y en un modelo de recomendación montado en Streamlit.
Nota al lector
En una primera instancia, contábamos con datos de establecimientos y de reseñas tanto de Google Maps como de Yelp. Con el alcance definido como los 6 estados mencionados en la introducción se comenzaron a podar las bases de datos iniciales, despojándolas de columnas y registros irrelevantes. Nos topamos con el problema de que la base de datos de Yelp únicamente contenía información sobre uno solo de los estados seleccionados, por lo que conseguir datos de los territorios faltantes fue el próximo paso a dar, y, una vez concretado, nos vimos enfrentados nuevamente ante un desafío. La nueva base de datos tenía muchos más registros, pero carecía de información sobre reseñas. La resolución fue como sigue: se usarán datos de Google Maps para el análisis de datos, pues la información sobre las reseñas es vital, y datos de Yelp para el modelo de recomendación, puesto que únicamente se necesitan datos de establecimientos y esta tabla es más completa.
La ingeniería de datos se dividió en dos partes: una para el análisis, que trabajó con los datos de Google, y una para el modelo de Machine Learning, que trabajó con Yelp.
Inicialmente, se nos proporcionan datos de reseñas de Google organizados por estado. Estos datos se presentan en forma de archivos JSON, que no son tabulares por naturaleza.
En el script reviews_state.ipynb
, hemos desarrollado un algoritmo que permite recorrer cada carpeta correspondiente a un estado y seleccionar cada archivo JSON. Luego, integramos todos estos archivos en un único archivo final para cada estado.
A continuación, creamos un DataFrame utilizando la biblioteca Pandas a partir de este archivo, y agregamos un campo "State" que contiene la abreviatura del estado. Además, convertimos el formato de tiempo de milisegundos a una fecha legible.
Finalmente, almacenamos el archivo resultante en formato Parquet para reducir su tamaño en megabytes (MB).
Los datos de Metadata de Sitios en Google se presentan en archivos JSON separados por comercio. Cada archivo contiene información relevante, como Nombre, Id, Cantidad de Reseñas, Calificación, Longitud, Latitud, Dirección y otros datos relacionados con cada comercio.
En el script estados_meta_google.ipynb
, cargamos cada archivo en un DataFrame y realizamos una eliminación inicial de datos duplicados. Luego, creamos una columna "estados" y asignamos la abreviatura del estado al que pertenece, basándonos en la información de dirección proporcionada en los datos.
Dado que el DataFrame contiene información de todos los estados, generamos un filtro para seleccionar los comercios de los estados preseleccionados. Posteriormente, creamos un nuevo DataFrame que contiene solo los comercios correspondientes a cada estado en cada archivo JSON.
En última instancia, creamos un DataFrame final que contiene los comercios seleccionados por estado en cada archivo JSON.
En un análisis preliminar de los datos de YELP, observamos que el archivo que contenía información sobre negocios en el territorio nacional se centraba principalmente en el estado de Florida.
Debido a esta limitación, decidimos obtener información adicional mediante el consumo de la API de YELP.
- Esta API permite un máximo de 1000 resultados por consulta.
- Para realizar una consulta, ingresamos una abreviatura o nombre de ciudad para especificar la ubicación deseada.
- Para utilizar la API, primero generamos una API_KEY registrándonos en YELP y debemos agregar "Bearer" antes de la API_KEY en las solicitudes.
- La API nos proporciona un código inicial para generar consultas desde otro entorno, y un código de respuesta exitosa es "200".
- El formato de respuesta de la API es JSON.
Después de consumir la API de YELP, fue necesario automatizar el proceso de búsqueda y almacenamiento de datos utilizando Google Cloud Platform.
Google Functions permitió la implementación de nuestro script de Python para consumir la API y almacenar los datos en Google Storage. Desde Google Storage, podemos acceder a los datos para realizar análisis o crear modelos de recomendación.
- Google Functions es un servicio en la nube que permite la implementación de scripts.
- Puede ejecutarse de manera automatizada y sin problemas.
- Permite asignar recursos de RAM y CPU según las necesidades de la tarea.
- Ofrece entornos de ejecución para Python, Node, Go y otros lenguajes.
- El archivo "main.py" ejecuta nuestra Function con la tarea a realizar, y en "requirements.txt" se declaran las bibliotecas necesarias.
La carpeta ingenieria_google replica en estructura, los buckets del proyecto montado en Google Cloud. Su función es brindarle al lector un entendimiento más profundo sobre cómo se llevaron a cabo los procesos de ingeniería, facilitándole una posibilidad de hacer lo que hace la nube, pero de forma local. Las carpetas data-procesada y data-preprocesada (esta última dentro de la carpeta de data-cruda), se encuentran vacías, e invitamos a correr las celdas en el archivo cloud_functions.ipynb para ver los resultados finales. La única diferencia estructural con la del proyecto en la nube, es el agregado de la carpeta archivos_adicionales, que contiene un archivo en formato csv necesario para poder imitar los procesos de Cloud Functions, y por otro lado, un archivo llamado scripts.py. Este último archivo, fue un primer acercamiento a lo que tenía que pasar en la nube. Se encuentra en la máquina virtual del proyecto, y al ejecutarse a través de comandos por terminal, realiza todas las partes que hacen las funciones.
Este proyecto implementa un modelo de Machine Learning de sistema de recomendación que se centra en identificar similitudes entre restaurantes de comida de mar en cada estado del sureste de los Estados Unidos. Su objetivo principal es ayudar a los inversionistas a tomar decisiones informadas sobre dónde invertir en restaurantes de comida de mar en esta región.
- Identificación de Estados sin Presencia: El modelo permite identificar en qué estados del sureste de EE. UU. carecen de presencia de restaurantes de comida de mar. Esto es crucial para evaluar oportunidades de inversión en lugares no saturados.
- Similitud Competitiva: Ofrece la capacidad de calcular la similitud competitiva entre dos restaurantes. Si el resultado es 1, significa que son competidores directos, mientras que 0 indica que son opuestos en términos de categoría y ubicación.
- Estudio Detallado del Sector: La aplicación "Recomendador de Inversión" proporciona herramientas para realizar un estudio más detallado del sector. Puedes acceder a consultas por estado de los 5 mejores restaurantes, revisar reseñas, realizar segmentación, explorar la ubicación geográfica y obtener información relevante para el análisis de indicadores por estado.
- Indicadores de Inversión y Mercado: La aplicación presenta indicadores clave por estado, como el índice de DCP promedio y el valor máximo de percepción del comercio. También proporciona indicadores de inversión, como el DCP (Densidad de Consumo Potencial según la población).
La aplicación se desarrolla en Streamlit, lo que la hace fácil de usar e intuitiva. Simplemente selecciona el estado que te interesa y explora las diversas funcionalidades y datos disponibles para tomar decisiones informadas de inversión.
Por último, la carpeta documentacion contiene una serie de archivos que se fueron creando a lo largo del proyecto en los que se documenta, con gran detalle, el avance y se comprende la escencia del trabajo.
- Google Drive con la data inicial
- Google Scheduler para programar la ejecución de funciones.
- Google Function para ejecutar las tareas de ETL de la data
- Google Storage para almacenar la data sin procesamiento
- Google BigQuery para generar Tablas relacionales
- Google Looker Studio para implementar un Dashboard
- API Yelp para generar informacíon actualizada de los comercios
- Streamlit para implementar una interfaz de modelo de recomendación