Analítica de Datos y Estrellas Michelin 2022 en España
- 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.

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)

¿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:

¿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.

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.


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.

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.

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.

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.

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.

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:

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.

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.

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.

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.

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.

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.

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.

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 (***).

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