top of page
Search

Analítica de Datos y Estrellas Michelin 2022 en España

  • Writer: Antonio Romero Camacho
    Antonio Romero Camacho
  • Dec 30, 2021
  • 8 min read

Introducción y motivación


Hace unos días leía en el periódico que el próximo año 2022 brillarán en el cielo gastronómico de España 229 estrellas. 32 nuevas se suman a la lista de la Guía Michelin 2021 en un año marcado por la incertidumbre y la resistencia del sector hostelero.

Figura 1. Chefs Galardonados con Estrella Michelin para el año 2022. Fuente: El País

Los que me conocen saben que soy un gran fan del talent show Masterchef España y que cuando tengo la oportunidad me gusta probar las propuestas gastronómicas de estos genios de la cocina. En esas visitas a algunos templos de la cocina ha habido de todo: sobretodo buenas experiencias aunque en algunos casos también nos hemos llevado chascos (de las malas no vamos a hablar porque no somos haters). Si tuviera que hacer mi ranking personal (no basado en datos pero si en hechos) a nivel nacional, Jordi Cruz (ABaC) y Eneko Atxa (Azurmendi y Eneko) son mis favoritos. Si nos restringimos a Madrid los dos sitios a los que siempre quiero volver son Dspeak (Diego Guerrero) y La Tasquería (Javier Estevez). ¿Cuál es mi criterio?, si sales por la puerta del restaurante con la sensación de que podrías comer esos platos a diario entonces tienen mi bandera verde.


Llevaba mucho tiempo dándole vueltas a un post que hablara sobre las Estrellas Michelin españolas pero no encontraba el hilo conductor.


Tras leer la noticia en El País hace unas semanas me pareció interesante conseguir esos datos y usarlos para un nuevo post donde mostrar cómo realizar una serie de tareas que pueden ser útiles para cualquier analista y científico de datos:

  • Extracción de datos a través de Web Scrapping (Python)

  • Preparación de datos con Pandas y Numpy (Python)

  • Generación de visualización / Dashboard (Power BI)

Figura 2. Dashboard generado en Power Bi

¿Qué datos necesitamos para trabajar los distintos puntos que acabamos de exponer?


Los datos se van a obtener de dos fuentes de datos en la web.


No existe un dataset listo y preparado para descargar y graficar. Los datos con los que vamos a trabajar en este post son del pasado 14 Diciembre de 2022. Es por esto que tendremos que obtenerlos de alguna de las tablas de los periódicos que han recogido la noticia. Para ello lanzaremos un primer proceso de Web Scrapping sobre la web del periódico El País.


Cuando tengamos los nombres de los restaurantes será necesario ampliar la información de los mismos para más tarde ubicarlos sobre un mapa. La localización se realizará a través de la dirección del establecimiento. Para obtener este dato lanzaremos un nuevo proceso de Web Scrapping sobre Google Maps.


A continuación se muestra un esquema de las tareas que se han realizado para llegar a obtener el dashboard de análisis de datos:


Figura 3. Flujo de trabajo

¿Cuáles son los objetivos del post?


Los objetivos a alcanzar con este post son:

  • Demostrar que si no hay un dataset existente que permita analizar el escenario que queremos siempre lo podemos crear extrayendo información de distintas fuentes a través de metodologías de Web Scrapping.

  • Mostrar la facilidad para transformar los datos mediante el uso de Python Pandas.

  • Generar un dashboard/cuadro de mandos que facilite el análisis y la compresión de los datos así como extraer valor para el negocio en cuestión.

Preguntas que deberíamos ser capaces de contestar al final del post


Una vez generado el dashboard al final del post, deberíamos ser capaces de responder de forma rápida, sencilla y muy visual a preguntas del tipo:


  • ¿Cuántos restaurantes nuevos aparecerán en la Guía Michelín 2022?

  • Muestra los nombres y la localización de los nuevos restaurantes de la Guía Michelin 2022 con dos Estrellas Michelin (**) que se encuentren en la provincia de Madrid

  • ¿Qué provincia tiene más restaurantes con la distinción tres Estrellas Michelin (***)?

  • ¿Cuántos restaurantes tiene la provincia de Barcelona en función del número de Estrellas Michelin?


Caso de uso guiado


Web Scrapping con Python Selenium - El País (Fuente de datos 1)


El periódico El País recoge la información de interés en una tabla de 12 pestañas tal y como se muestra en la Figura 3. Nos interesa extraer todas las columnas: número de estrellas, nombre del restaurante, población, provincia y si el restaurante es nuevo en la guía o si permanece un año más. Las cuatro últimas columnas contienen texto. Para extraer la información de la columna Estrellas debemos cerciorarnos que e campo incluye una imagen: hay tres imágenes disponibles cuyos nombres, almacenados en el atributo src, siguen el patrón número_estrellas.png. Por ello, los valores que se recogerán inicialmente en la columna Estrellas serán los caracteres 1, 2, y 3.

Figura 4. Tabla de la que se extrae la información. Fuente: El País

A continuación se muestra el código para extraer la información. Entre cada una de las acciones es conveniente incluir un tiempo de espera mediante el comando time.sleep(segundos) para asegurarnos de que la acción anterior acaba antes de empezar la siguiente.

Figura 5. Web Scrapping página El País - Parte 1

Figura 6. Web Scrapping página El País - Parte 2

Como resultado se obtiene una lista que incluye cada registro/fila también en forma de lista. Mostramos algunas de sus primeras filas en la Figura 6.

Figura 7. Lista resultado del Web Scrapping de la fuente 1

Preparación de datos con Pandas y Numpy


Una vez extraídos los datos de la web de El País creamos un dataframe para poner la información en formato tabular. Para ello usamos la librería Pandas.

Figura 8. Creación de un dataframe con la librería Pandas

A continuación transformaremos la columna Estrellas para que la información se muestre con tantos asteriscos como estrellas el han sido concedidas a cada restaurante. Esta transformación se hace con la ayuda de la librería Numpy y el comando where, que nos permite establecer una condición y los valores a asignar en función de si la misma es verdadera o falsa.

Figura 9. Modificación de los valores de la columna Estrellas

Como hemos mencionado anteriormente, estos datos no son suficientes para generar un mapa con las localizaciones de cada uno de los 229 restaurantes incluidos en el dataframe. Por ello añadiremos una columna adicional llamada key (clave en inglés) que nos servirá como referencia para la unión de este dataframe con la información de localización extraída de Google Maps.


Figura 10. Nueva columna key para usar como pivote en join/merge

Web Scrapping con Python Selenium - Google Maps (Fuente de datos 2)


Para obtener las direcciones que enriquezcan las informaciones obtenidas hasta ahora lanzamos un nuevo proceso de Web Scrapping con Selenium sobre la web Google Maps. Estos procesos de scrapping no son más que la automatización de un proceso que habría que repetir N veces y que sigue la lógica de actuación que seguimos cuando nosotros mismos lanzamos una búsqueda online: i) Abre el explorador, ii) introduce el URL de la página en cuestión, iii) Acepta el pop up de cookies, iv) introduce en la caja de búsqueda el nombre del restaurante en cuestión, v) copia la dirección devuelta por el buscador, vi) almacénala en una lista, etc.

Figura 11. Proceso de Web Scrapping para obtención de direcciones (Google Maps)

Como resultado de este segundo proceso de scrapping se obtiene una nueva lista de 229 elementos llamada add_info (información adicional). A partir de ella generaremos un nuevo dataframe como se muestra a continuación:


Figura 12. Dataframe de información adicional

Para obtener la tabla final de datos habrá que juntar el dataframe origina ( df ) con el dataframe de información adicional ( add_info_df ). La acción de juntar se lleva a cabo con el comando merge.


Figura 13. Tabla final resultado de un merge

Por último, transferimos la información mostrada en results a un archivo CSV para usarlo como input file (archivo de entrada) a Power Bi. Con el fin de evitar problemas con la codificación en el traspaso de información debida a los acentos, eñes y caracteres especiales, especificamos en encoding el parámetro utf-8-sig.

Figura 14. Creación de archivo CSV como input file para Power Bi

Creación del Dashboard - Power Bi


La función del dashboard es la de poner al alcance de todos los datos que cada persona que tenga que interactuar con ellos sea capaz de obtener respuestas de forma rápida y sencilla. En este caso volvemos a usar una herramienta que ya hemos utilizado en el blog con anterioridad: Power Bi. El dashboard se ha generado con la paleta de colores que emplea la Guía Michelin para crear conexión con el topic.


El dashboard se compone de 5 elementos:


  • Panel superior: consta de cuatro tarjetas que proporcionan una serie de conteos determinados

  • Panel de filtros: se encuentra en la zona central izquierda y permite filtrar los resultados a nivel de registro por número de estrellas, novedad en 2022, provincia y población

  • Mapa: situado en la zona derecha representa a través de puntos de colores la localización de cada restaurante. Dependiendo del número de estrellas, el punto se representa en rojo claro (*), amarillo oscuro (**) y rojo oscuro (***).

  • Tabla: situada en la esquina inferior izquierda muestra en formato tabla los campos Restaurante, Estrellas y Provincia de los registros resultado

  • Gráfico de barras: representa el número de restaurantes (eje Y) por provincia (eje X) ordenados de mayor a menor número (de izquierda a derecha). Cada barra ha sido segmentada en clases según el número de estrellas siguiendo la misma escala de colores que en el mapa.

Para generar las métricas mostradas en las tarjetas Restaurantes con 1 Estrella *, Restaurantes con 2 Estrellas ** y Restaurantes con 3 Estrellas *** se han empleado Nuevas Medidas Rápidas y Nuevas Medidas (dentro de la pestaña Cálculos del Menú inicio de Power Bi). Con las medidas rápidas hemos creado nuevos campos con el número de restaurantes que tiene cada distinción. Con las Nuevas Medidas adicionales y haciendo uso de las funciones IF (condicional) y ISBLANK hemos conseguido que cuando un filtro no dé resultado, la tarjeta muestre un 0 en lugar de IsBlank.

Comprobamos que funciona por ejemplo si buscamos restaurantes dos y tres estrellas en Valdemoro, donde sabemos que sólo hay un restaurante con una estrella.


Figura 15. Restaurantes en Valdemoro (las tarjetas muestran 0 en lugar de IsBlank)

Todos los elementos visuales y métricas están conectados con los filtros por lo que cada vez que se marquen una serie de restricciones, los objetos de la visualización se actualizarán para mostrar la información actualizada de acuerdo a la consulta.


Respuesta a las preguntas iniciales


1. ¿Cuántos restaurantes nuevos aparecerán en la Guía Michelín 2022?

Para dar respuesta a esta pregunta bastará con seleccionar en el filtro Nueva la opción

Nueva Estrella. De esta forma el dataset original es filtrado y devuelve los resultados que

responden a esa condición.


Figura 16. Resultado a la pregunta 1 (Power Bi)

Según nuestros datos, en 2022 habrá 32 nuevos restaurantes presentes en la nueva

edición de la Guía Michelin: 28 nuevos una estrella (*), 4 nuevos dos estrellas (**) y ningún

tres estrellas (***).


Valencia es la provincia con más novedades (4 nuevos galardonados) seguida por Madrid

(2 nuevos una estrella y 1 nuevo dos estrellas).


2. Muestra los nombres y la localización de los nuevos restaurantes de la Guía

Michelin 2022 con dos Estrellas Michelin (**) que se encuentren en la provincia

de Madrid


Será necesario seleccionar dos estrellas (**) en el filtro Estrellas, Nueva Entrada en el filtro

Nueva y Madrid en el desplegable del filtro por Provincia. Los resultados muestran que en

Madrid entra un nuevo restaurante con dos estrellas: es el restaurante Smoked Room del

malagueño Dani García, situado en el Paseo de la Castellana. El dato dirección puede

visualizarse en el tolltip que emerge al situar el ratón sobre el punto del mapa que localiza al

restaurante.


Figura 17. Resultado a la pregunta 2

La tarjeta recuento de restaurantes, el gráfico de barras y el mapa nos indican que sólo un

restaurante cumple con las restricciones impuestas en el filtro.

3. ¿Qué provincia tiene más restaurantes con la distinción tres Estrellas Michelin

(***)?


Será necesario filtrar por los restaurantes con tres estrellas. En total hay 11 en España que

tienen esa distinción. Guipuzkoa es la provincia con mayor número de restaurantes tres

estrellas, seguido de Barcelona con 2 restaurantes. El resto de provincias mostradas ne el

gráfico de barras tan sólo cuentan con 1 restaurante tres estrellas cada una.


Figura 18. Respuesta a la pregunta 3

Si se quisieran ver los nombres de los restaurantes que tienen ese distintivo en Guipuzkoa

bastaría con seleccionar la barra correspondiente a esa provincia. Los resultados se

actualizarán y mostrarán automáticamente en la tabla.


Figura 19. Nombres de los restaurantes con tres estrellas en Guipuzkoa

4. ¿Cuántos restaurantes tiene la provincia de Barcelona en función del número de

Estrellas Michelin?


Esta pregunta se puede responder seleccionando como filtro la provincia de Barcelona a

través de los resultados de las tarjetas (cards) o con la segmentación del gráfico de barras

(posicionando el ratón sobre cada sección). En total cuenta con 26 restaurantes distinguidos

en la Guía Michelín de los cuales 18 tienen una estrella (*), 6 tienen dos estrellas (**) y 2

tienen tres estrellas (***).


Figura 20. Respuesta a la pregunta 4

Conclusión


Espero que os haya resultado interesante este post donde hemos tratado conceptos de Web Scrapping y Visualización con fines analíticos en Power Bi.


Nota: La noticia menciona que hay 31 nuevas estrellas porque no considera la estrella que el restaurante Ibaya de Andorra ha conseguido.


Gracias por leerme. Cualquier comentario / feedback es bienvenido.


Referencias y agradecimiento


Dar las gracias a El País por poner los datos a disposición de los lectores (enlace a noticia).





 
 
 

Comentarios


bottom of page