<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
  <channel>
    <title><![CDATA[Philipp Kahr - Elasticsearch Labs]]></title>
    <description><![CDATA[Articles and tutorials from the Search team at Elastic]]></description>
    <copyright><![CDATA[© 2026. Elasticsearch B.V. All Rights Reserved]]></copyright>
    <image>
      <title><![CDATA[Philipp Kahr - Elasticsearch Labs]]></title>
      <url>https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt1121c0bf0e8a6e65/6a88da6340a1841030ef456f/search-labs-thumbnail.png</url>
      <link>https://www.elastic.co/es/search-labs/author/philipp-kahr</link>
    </image>
    <link>https://www.elastic.co/es/search-labs/author/philipp-kahr</link>
    <atom:link href="https://www.elastic.co/es/search-labs/rss/author/philipp-kahr.xml" rel="self" type="application/rss+xml"/>
    <language><![CDATA[es]]></language>
    <lastBuildDate>Mon, 05 Oct 2026 15:55:17 GMT</lastBuildDate>
  <item>
    <title><![CDATA[Spotify Wrapped parte 2: Análisis y visualización de datos]]></title>
    <description><![CDATA[Profundizaremos más que nunca en tus datos de Spotify y exploraremos conexiones que ni siquiera sabías que existían.]]></description>
    <content:encoded><![CDATA[<p>En la <a href="https://www.elastic.co/search-labs/blog/spotify-wrapped-create-in-kibana">primera parte</a> de este serial, escrita por Iulia Feroli, hablamos sobre cómo obtener tus datos de Spotify Wrappped y visualizarlos en Kibana. En la parte 2, profundizamos en los datos para ver qué más podemos descubrir. Para ello, vamos a aprovechar un enfoque un poco diferente y usar <a href="https://github.com/elastic/elasticsearch-labs/tree/main/supporting-blog-content/spotify-to-elasticsearch">Spotify a Elasticsearch</a> para indexar los datos en Elasticsearch. Esta herramienta es un poco más avanzada y requiere un poco más de configuración, pero merece la pena. Los datos están más estructurados y podemos hacer preguntas más complejas.</p><h2>Diferencias respecto al primer análisis de Spotify Wrapped</h2><p>En el primer blog, usamos la exportación de Spotify directamente y no realizamos ninguna tarea de normalización ni ningún otro procesamiento de datos. Esta vez, usaremos los mismos datos, pero realizaremos un procesamiento de datos para hacerlos más utilizables. Esto nos permitirá responder a preguntas mucho más complejas, como:</p><ul><li><p>¿Cuál es la duración media de una canción en mi top 100?</p></li><li><p>¿Cuál es la popularidad media de una canción en mi top 100?</p></li><li><p>¿Cuál es la duración media de escucha de una canción?</p></li><li><p>¿Cuál es la pista que más me salto?</p></li><li><p>¿Cuándo me gusta saltarme pistas?</p></li><li><p>¿Estoy escuchando una hora concreta del día más que otras?</p></li><li><p>¿Estoy escuchando más un día de la semana que otros?</p></li><li><p>¿Es un mes de especial interés?</p></li><li><p>¿Cuál es el artista con el mayor tiempo de escucha?</p></li></ul><p>Spotify Wrapped es una experiencia divertida cada año, mostrando lo que escuchaste este año. No te da cambios año tras año, y por tanto podrías extrañarte a algunos artistas que antes estaban en tu top 10, pero que ahora desaparecieron.</p><h2>Procesamiento de datos envueltos en Spotify para análisis</h2><p>Hay una gran diferencia en la forma en que procesamos los datos en la primera y la segunda publicación. Si quieres seguir trabajando con los datos de la primera publicación, tendrás que tener en cuenta algunos cambios en el nombre de campos, así como volver a ES|QL para hacer ciertas extracciones como <code>hour of day</code> sobre la marcha.</p><p>Aun así, todos deberíais poder seguir esta publicación. El procesamiento de datos se realiza en el repositorio <a href="https://github.com/elastic/elasticsearch-labs/tree/main/supporting-blog-content/spotify-to-elasticsearch">de Spotify a Elasticsearch</a> , implica aplicar a la API de Spotify la duración de la canción, la popularidad y también renombrar y mejorar algunos campos. Por ejemplo, el campo <code>artist</code> en la exportación de Spotify es solo una cadena y no representa características ni pistas multiartista</p><h2>Visualizando datos en Spotify Wrapped con paneles de control</h2><p>Creé un panel de control en Kibana para visualizar los datos. El panel está <a href="https://github.com/elastic/elasticsearch-labs/blob/main/supporting-blog-content/spotify-to-elasticsearch/kibana/dashboard.ndjson">disponible aquí</a> y puedes importarlo a tu instancia Kibana. El panel de control es bastante extenso y responde muchas de las preguntas anteriores.</p><p>¡Vamos a hablar de algunas preguntas y cómo responderlas juntos!</p><h3>¿Cuál es la duración media de una canción en mi top 100?</h3><p>Para responder a esta pregunta, podemos usar Lens o ES|QL. Vamos a explorar las tres opciones. Formulemos esta pregunta correctamente de manera Elasticsearch. Queremos encontrar las 100 canciones más populares y luego calcular la duración media de todas esas canciones juntas. En términos de Elasticsearch eso serían dos agregaciones:</p><ol><li><p>Descubre las 100 mejores canciones</p></li><li><p>Calcula la duración media de esas 100 canciones.</p></li></ol><p><strong>Lens</strong></p><p>En Lens, esto es bastante sencillo: crear un nuevo Lens, cambiar a una tabla y arrastrar y soltar el campo <code>title</code> dentro de la tabla. Luego haz clic en el campo <code>title</code> y pon el tamaño en 100, además de poner modo <code>accuracy</code> . Luego arrastra y suelta el campo <code>duration</code> en la tabla y usa <code>last value</code>, porque realmente solo necesitamos el último valor de la duración de cada canción. La misma canción solo tendrá una duración. Al final de esta agregación de <code>last value</code> hay un desplegable para una fila resumen, selecciona <code>average</code> y te lo mostrará.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt5df1d7f36de5e2ae/6a17e5df0b0beddd57dd355c/a56f6e48e6b53af3ca3d38d67ce0916d0621ef16-2910x1058.png" alt="Uso de Lens para datos envuelto en Spotify" /><p><strong>ES|QL</strong></p><p>ES|QL es un lenguaje bastante nuevo comparado con DSL y agregaciones, pero es muy poderosa y fácil de usar. Para responder a la misma pregunta en ES|QL, escribirías la siguiente consulta:</p><p>Déjame guiarte paso a paso por este ES|Consulta QL:</p><ol><li><p><code>from spotify-history</code> - Este es el patrón índice que estamos usando.</p></li><li><p><code>stats duration=max(duration), count=count() by title</code> - Esta es la primera agregación, estamos calculando la duración máxima de cada canción y el recuento de cada canción. Usamos <code>max</code> en lugar de <code>last value</code> como se usa en el Lens, eso es porque ES|Ahora mismo QL no tiene ni primera ni última.</p></li><li><p><code>sort count desc</code> - Ordenamos las canciones por el conteo de cada canción, así que la canción más escuchada está arriba.</p></li><li><p><code>limit 100</code> - Limitamos el resultado a las 100 mejores canciones.</p></li><li><p><code>stats Average duration of the songs=avg(duration)</code> - Calculamos la duración media de las canciones.</p></li></ol><h3>¿Me interesa especialmente un mes?</h3><p>Para responder a esta pregunta podemos usar Lens con la ayuda de campo de ejecución y ES|QL. ¿Qué notamos de inmediato? No hay ningún campo en los datos que denote el <code>month</code> directamente, sino que necesitamos calcularlo a partir del campo <code>@timestamp</code> . Hay varias formas de hacerlo:</p><ol><li><p>Emplea un campo de ejecución para alimentar el objetivo</p></li><li><p>ES|QL</p></li></ol><p>Personalmente creo que ES|QL es la solución más ordenada y rápida.</p><p>Eso es todo, no hace falta nada sofisticado, podemos aprovechar la función <code>DATE_EXTRACT</code> para extraer el mes del campo <code>@timestamp</code> y luego podemos agregar sobre él. Usando el ES|Visualización QL podemos incluirla en el panel de control.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt2c221ad4446cfb09/6a17e5e03e9e45076eba144c/7f942cf38fbe0fecec1d741e7df922196f4e9483-1878x722.png" alt="Visualización mensual de desglose en Spotify Wrapped" /><h3>¿Cuál es mi duración de escucha por artista y al año?</h3><p>La idea detrás de eso es ver si un artista es solo algo puntual o si hay una repetición. Si no recuerdo mal, Spotify solo te muestra los 5 mejores artistas en el wrappeado anual. ¿Quizá tu artista número 6 se mantiene igual todo el tiempo, o cambia mucho después de la décima posición?</p><p>Una de las representaciones más sencillas de esto es un gráfico de barras porcentuales. Podemos usar Lens para esto. Sigue los pasos a seguir:</p><p>Arrastra y suelta el campo <code>listened_to_ms</code> . Este campo representa cuánto tiempo escuchaste una canción en milisegundos. Ahora, por defecto, Lens creará una agregación <code>median</code> , no queremos eso, cambia eso a un <code>sum</code>. En la parte superior selecciona <code>percentage</code> en lugar de <code>stacked</code> para el tipo de gráfico de barras. Para el desglose selecciona <code>artist</code> y di top 10. En el menú desplegable de <code>Advanced</code> no olvides seleccionar <code>accuracy mode</code>. Ahora, cada bloque de color representa cuánto escuchaste a este único artista. Dependiendo de tu selector de tiempo, las barras pueden representar valores que van de días, a semanas, a meses o años. Si quieres un desglose semanal, selecciona el <code>@timestamp</code> y configura el <code>mininum interval</code> en <code>year</code>. Ahora, lo que podemos decir en mi caso es que <code>Fred Again..</code> es el artista que más escuché, casi el 12% de mi tiempo total de escucha lo consumía <code>Fred Again..</code>. También vemos que <code>Fred Again..</code> bajó un poco en 2024, pero <code>Jamie XX</code> creció considerablemente. Si comparamos solo el tamaño de las barras. También podemos notar que, aunque <code>Billie Eilish</code> se está tocando constantemente en 2024, el ancho del manillar. Esto significa que escuché más a <code>Billie Eilish</code> en 2024 que en 2023.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blteb0c11b909be859f/6a17e5e2e8fbce239a3a18ee/61a5bcc6b7385ed0a11b67c9c6bab32d27f4a49b-2942x1354.png" alt="Visualización del historial con Spotify Wrapped usando Kibana" /><h3>¿Y qué hay de las pistas principales por artista por tiempo de escucha frente al tiempo total de escucha?</h3><p>Es una pregunta larga. Déjame intentar explicar lo que quiero decir con eso. Spotify te dice cuál es la canción más destacada de un solo artista, o tus 5 canciones más populares en total. Bueno, eso es sin duda interesante, pero ¿qué pasa con la ruptura de un artista? ¿Todo mi tiempo lo consumo solo con una sola canción que pongo una y otra vez, o eso se distribuye de forma equitativa?</p><p>Crea un nuevo objetivo y selecciona <code>Treemap</code> como tipo. Para el <code>metric</code>, igual que antes: selecciona <code>sum</code> y usa <code>listened_to_ms</code> como campo. Para el <code>group by</code> necesitamos dos valores. El primero se <code>artist</code> y luego agrega otro con <code>title</code>. El resultado intermedio es así:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt9aa0e4877472123f/6a17e5e44b055d6dcf43218e/2dea389664a0d3d13fff03c6337bff3ce740f9b1-2922x1430.png" alt="Visualización del historial con Spotify Wrapped usando Kibana" /><p>Vamos a cambiar eso a los 100 mejores artistas y desseleccionar la <code>other</code> en el desplegable avanzado, además de activar el modo de precisión. Para el título, cambia eso a top 10 y activa el modo de precisión. El resultado final es así:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt070bf745be1d3f92/6a17e5e66864a43a0fb6875b/7e99a15c69801e58302af4c12b500242a7e8bc9d-2640x1622.png" alt="Visualización en Spotify Wrapped usando Kibana" /><p>¿Qué nos dice esto ahora exactamente? Sin mirar ningún componente temporal, podemos decir que en todo mi historial de escuchas con Spotify, pasé un 5,67% escuchando <code>Fred Again..</code>. En individuo, pasé el 1,21% de ese tiempo escuchando <code>Delilah (pull me out of this)</code>. Es interesante ver si hay una sola canción que ocupe a un artista, o si hay otras canciones también. El propio mapa de árbol es una forma agradable para representar estas distribuciones de datos.</p><h3>¿Escucho en una hora y día concretos?</h3><p>Bueno, eso podemos responder de forma muy sencilla con una visualización de lentes aprovechando el <code>Heat Map</code>. Crea una nueva lente, selecciona <code>Heat Map</code>. Para el <code>Horizontal Axis</code> selecciona <code>dayOfWeek</code> campo y ponlo en <code>Top 7</code> en vez de Top 3. Para el <code>Vertical Axis</code> seleccionar el <code>hourOfDay</code> y para <code>Cell Value</code> simplemente un <code>Count of records</code>simple . Ahora esto dará lugar a este panel:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt2d08e4f4d0a90550/6a17e5e7e8fbce1af43a18f2/c83ec13a3c7d1b71b8a6b110ed2b74e691d868e6-3538x1720.png" alt="Visualización de hábitos de escucha con Spotify Wrapped usando paneles de control" /><p>Hay un par de cosas molestas alrededor de esta lente que simplemente me molestan al interpretar. Intentemos limpiarlo un poco. Primero que nada, no me importa demasiado la leyenda, usa el símbolo de arriba con el triángulo, cuadrado, círculo y desactivarlo.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltce46c47addd91c61/6a17e5e94b055d15d5432192/84f51d6c885b929bf47ac05edd32ca149ad2e651-1040x298.png" alt="Visualización con Spotify Wrapped " /><p>Ahora, la segunda parte que resulta molesta es la organización de los días. Es lunes, miércoles, jueves o cualquier otra cosa, dependiendo de los valores que tengas. El <code>hourOfDay</code> está correctamente ordenado. La forma de ordenar los días es un truco gracioso y eso se llama usar <code>Filters</code> en vez de <code>Top Values</code>. Haz clic en <code>dayOfWeek</code> y selecciona <code>Filters</code>, ahora debería ver así:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt0e9c6005a917d4de/6a17e5eb4b055d6e10432196/2498a66098d40a1ba44d3f88464a9888dca204af-3574x1294.png" alt="Visualización del historial de Spotify Wrapped con Kibana Dashboards" /><p>Ahora empieza a escribir los días. Un filtro por cada día. <code>"dayOfWeek" : Monday</code> y ponle la etiqueta <code>Monday</code> y repite.</p><p>Una advertencia en todo esto es que Spotify proporciona los datos en UTC+0 sin ninguna información de zona horaria. Claro, también proporcionan la dirección IP y el país al que escuchaste, y podríamos deducir la información de la zona horaria a partir de eso, pero eso puede ser un poco raro y para países como EE. UU., que tienen múltiples zonas horarias, puede ser demasiado complicado. Esto es importante porque Elasticsearch y Kibana tienen soporte para zonas horarias y, al proporcionar la zona horaria correcta en el campo <code>@timestamp</code> , Kibana ajustaría automáticamente la hora a la hora de tu navegador.</p><p>Debería ver así cuando se finalice, y se nota que soy un oyente muy activo durante el horario laboral y menos los sábados y domingos.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltd8eaab83c8c9c7f2/6a17e5ed6df7315e250a0ec5/c664c90ff8e852e1766e8101afc20c58e110f09c-3582x2030.png" alt="Visualización en Spotify Wrapped usando Kibana Dashboards" /><h2>Conclusión</h2><p>En este blog, profundizamos un poco más en las complejidades que ofrecen los datos de Spotify. Mostramos algunas formas sencillas y rápidas de poner en marcha algunas visualizaciones. Es simplemente asombroso tener tanto control sobre tu propio historial de escucha. Echa un vistazo a las otras partes del serial:</p><ul><li><p><a href="https://www.elastic.co/search-labs/blog/spotify-wrapped-create-in-kibana">Parte 1: Cómo crear tu propio Spotify Wrapped in Kibana</a></p></li><li><p><a href="https://www.elastic.co/search-labs/blog/elasticsearch-anomaly-detection-jobs">Parte 3: Empleos de población para detección de anomalías</a></p></li><li><p><a href="https://www.elastic.co/search-labs/blog/find-relationships-in-data">Parte 4: Detección de relaciones en los datos</a></p></li><li><p><a href="https://www.elastic.co/search-labs/blog/vectors-spotify-wrapped-part-05">Parte 5: Encontrar a tu mejor amigo musical con vectores</a></p></li></ul>]]></content:encoded>
    <link>https://www.elastic.co/search-labs/blog/spotify-wrapped-data-analysis-visualization</link>
    <guid isPermaLink="true">https://www.elastic.co/search-labs/blog/spotify-wrapped-data-analysis-visualization</guid>
    <category><![CDATA[Kibana]]></category>
    <category><![CDATA[analíticas]]></category>
    <dc:creator><![CDATA[Philipp Kahr]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt7f8cddbca1a54cd5/6a17e5efe9ea87717ba9c585/e04f85e87b5b4e69b6e2df9367840a56985b96a1-1792x1024.png" length="0" type="image/png"/>
    <pubDate>Tue, 25 Feb 2025 00:00:00 GMT</pubDate>
  </item>
  </channel>
</rss>