Skip to content

juliasalto/proyectohipotesis

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 

Repository files navigation

Proyecto 2: Hipótesis

  1. Ficha técnica
  2. Procesamiento y análisis
  3. Conclusiones generales

Ficha Técnica: Proyecto de Análisis de Datos

  • Título del Proyecto: Hipótesis
  • Enlaces de interés:
  • Objetivo:
    • Preparar la información de la base de datos que corresponde a los datos de las reproducciones de canciones más escuchadas en el año 2023 en la plataforma Spotify, Deezer y Apple, para comprender, respaldar y conocer el comportamiento que hace que una canción sea más o menos escuchada en una plataforma. Analizar los datos para convertirlos en información respaldada por cálculos estadísticos.
    • Se pretende obtener las respuestas para validar o refutar las siguientes hipótesis:
      • Las canciones con un mayor BPM (Beats Por Minuto) tienen más éxito en términos de cantidad de streams en Spotify.
      • Las canciones más populares en el ranking de Spotify también tienen un comportamiento similar en otras plataformas como Deezer.
      • La presencia de una canción en un mayor número de playlists se relaciona con un mayor número de streams.
      • Los artistas con un mayor número de canciones en Spotify tienen más streams.
      • Las características de la música influyen en el éxito en términos de cantidad de streams en Spotify.
  • Equipo: Julieta Salto - Osiris Berbesia
  • Herramientas y Tecnologías:
    • Google BigQuery para el procesamiento de datos
    • PowerBi para configurar un dashboard
    • Google Colab y Python para realizar pruebas estadísticas
    • Documentación de Google Console
    • Documentación Python
    • OpenAI - ChatGPT
    • Figma para la presentación final

Procesamiento y análisis:

  • SQL en BigQuery

    • Nulos:

      (SELECT COUNT(*) FROM `saltoproyecto2hipotesis.datos_hipotesis.track_in_spotify` WHERE track_id is null) AS null_id,
      (SELECT COUNT(*) FROM `saltoproyecto2hipotesis.datos_hipotesis.track_in_spotify` WHERE track_name is null) AS null_track,
      (SELECT COUNT(*) FROM `saltoproyecto2hipotesis.datos_hipotesis.track_in_spotify` WHERE artist_name is null) AS null_name,
      (SELECT COUNT(*) FROM `saltoproyecto2hipotesis.datos_hipotesis.track_in_spotify` WHERE artist_count is null) AS null_count,
      (SELECT COUNT(*) FROM `saltoproyecto2hipotesis.datos_hipotesis.track_in_spotify` WHERE released_year is null) AS null_year,
      (SELECT COUNT(*) FROM `saltoproyecto2hipotesis.datos_hipotesis.track_in_spotify` WHERE released_month is null) AS null_month,
      (SELECT COUNT(*) FROM `saltoproyecto2hipotesis.datos_hipotesis.track_in_spotify` WHERE released_day is null) AS null_day,
      (SELECT COUNT(*) FROM `saltoproyecto2hipotesis.datos_hipotesis.track_in_spotify` WHERE in_spotify_playlists is null) AS null_playlists,
      (SELECT COUNT(*) FROM `saltoproyecto2hipotesis.datos_hipotesis.track_in_spotify` WHERE in_spotify_charts is null) AS null_charts,
      (SELECT COUNT(*) FROM `saltoproyecto2hipotesis.datos_hipotesis.track_in_spotify` WHERE streams is null) AS null_streams
      
      
    • Duplicados:

      SELECT
      track_name, artist_name,
      count(*) AS cantidad
      FROM `saltoproyecto2hipotesis.datos_hipotesis.track_in_spotify`
      GROUP BY
      track_name, artist_name
      HAVING COUNT(*) > 1```
      
      
    • Fuera del alcance:

      SELECT *
      EXCEPT(key, mode)
      FROM
      `saltoproyecto2hipotesis.datos_hipotesis.track_technical_info`
      
      
    • Máximos, mínimos, promedios:

      SELECT
      MAX(`speechiness_%`) AS `max_speechiness_%`, MIN(`speechiness_%`) AS `min_speechiness_%`, AVG(`speechiness_%`) AS `avg_speechiness_%`, MAX(`danceability_%`) AS `max_danceability_%`, MIN(`danceability_%`) AS `min_danceability_%`, AVG(`danceability_%`) AS `avg_danceability_%`, MAX(`valence_%`) AS `max_valence_%`, MIN(`valence_%`) AS `min_valence_%`, AVG(`valence_%`) AS `avg_valence%`, MAX(`energy_%`) AS `max_energy_%`, MIN(`energy_%`) AS `min_energy_%`, AVG(`energy_%`) AS `avg_energy_%`,
      FROM
      `saltoproyecto2hipotesis.datos_hipotesis.track_technical_info```
      
      
    • Unión de tablas:

      SELECT spotify.*
      EXCEPT(track_name, artist_name,
      released_year,
      released_month,
      released_day,
      streams),
      REGEXP_REPLACE(track_name, r'[\p{So}\p{Cn}]', '') AS cleaned_track_name,
      REGEXP_REPLACE(artist_name, r'[\p{So}\p{Cn}]', '') AS cleaned_artist_name,
      CONCAT (CAST(released_year AS string),"-", CAST(released_month AS string),"-", CAST(released_day AS string)) AS released_date,
      CAST(streams AS integer) AS new_streams,
      techical_info.* EXCEPT(track_id),
      track_in_competition.* EXCEPT(track_id),
      FROM
      `saltoproyecto2hipotesis.datos_hipotesis.track_in_spotify` AS spotify
       LEFT JOIN
      `saltoproyecto2hipotesis.datos_hipotesis.track_technical_info` AS techical_info
      ON
      spotify.track_id = techical_info.track_id
      LEFT JOIN
      `saltoproyecto2hipotesis.datos_hipotesis.track_in_competition` AS track_in_competition
      ON
      spotify.track_id = track_in_competition.track_id
      WHERE
      streams NOT LIKE "%B%"
      AND NOT track_name IN("SNAP",
      "About Damn Time",
      "Take My Breath",
      "SPIT IN MY FACE!")
      
    • Cuartiles:

      WITH
      cuartiles AS(
      SELECT
      new_streams,
      NTILE(4) OVER(ORDER BY new_streams) AS cuartiles_streams
      FROM
      `datos_hipotesis.view_unificado_3` )
      SELECT
      unificado.*,
      cuartiles.cuartiles_streams,
      IF(cuartiles.cuartiles_streams = 4, "alto", if(cuartiles.cuartiles_streams = 3, "medio alto", if(cuartiles.cuartiles_streams = 2, "medio bajo", "bajo"))) as categoria_streams
      FROM
      `datos_hipotesis.view_unificado_3` unificado
      LEFT JOIN!
      cuartiles
      ON
      unificado.new_streams=cuartiles.new_streams```
      
      

    La query para la tabla consolidada que usé para la mayoría de los hitos se ve así

    Captura de Pantalla 2024-07-01 a la(s) 12 35 25

    • Correlaciones:
      SELECT
      CORR(new_streams, sum_playlists) AS correlation_value
      FROM
      `saltoproyecto2hipotesis.datos_hipotesis.4_view_unificado```
      
      

Hipótesis: Pruebas de Shapiro Wilk, Mann Whitney U, Regresión lineal

  • Las canciones con un mayor BPM (Beats Por Minuto) tienen más éxito en términos de cantidad de streams en Spotify.

    • Correlación: -0.0032001857690

      SELECT
      CORR(new_streams, sum_playlists) AS correlation_value
      FROM
       `saltoproyecto2hipotesis.datos_hipotesis.4_view_unificado````
      
    • Test Shapiro Wilk:

      Captura de Pantalla 2024-07-01 a la(s) 14 55 40 Captura de Pantalla 2024-07-01 a la(s) 14 58 34 Captura de Pantalla 2024-07-01 a la(s) 14 58 49

      Se visualiza en la distribución que no tienen una configuración normal

    • Test Mann Whitney U:

      Captura de Pantalla 2024-07-01 a la(s) 15 00 54

    • Regresión lineal:

      Captura de Pantalla 2024-07-01 a la(s) 15 02 12 Captura de Pantalla 2024-07-01 a la(s) 15 02 48

  • Las canciones más populares en el ranking de Spotify también tienen un comportamiento similar en otras plataformas como Deezer.

    • Correlación: 0.60767802013080952

      SELECT
      CORR(in_deezer_charts, in_spotify_charts) as corr_charts,
      FROM
      `saltoproyecto2hipotesis.datos_hipotesis.4_view_unificado````
      
      
    • Test Shapiro Wilk:

      Captura de Pantalla 2024-07-01 a la(s) 19 10 31 Captura de Pantalla 2024-07-01 a la(s) 19 12 02 Captura de Pantalla 2024-07-01 a la(s) 19 12 15

      Se visualiza en la distribución que no tienen una configuración normal

    • Test Mann Whitney U:

      Captura de Pantalla 2024-07-01 a la(s) 19 12 29

    • Regresión lineal:

      Captura de Pantalla 2024-07-01 a la(s) 19 14 54 Captura de Pantalla 2024-07-01 a la(s) 19 15 09

  • La presencia de una canción en un mayor número de playlists se relaciona con un mayor número de streams.

    • Correlación: 0.783680301078940

      SELECT
      CORR(sum_playlists, new_streams) as corr_playlists,
      FROM
      `saltoproyecto2hipotesis.datos_hipotesis.4_view_unificado`
      
      
    • Test Shapiro Wilk

      Captura de Pantalla 2024-07-01 a la(s) 19 20 23 Captura de Pantalla 2024-07-01 a la(s) 19 21 13 Captura de Pantalla 2024-07-01 a la(s) 19 21 44

      Se visualiza en la distribución que no tienen una configuración normal

    • Test Mann Whitney U:

      Captura de Pantalla 2024-07-01 a la(s) 19 20 36

    • Regresión lineal:

    Captura de Pantalla 2024-07-01 a la(s) 19 23 45 Captura de Pantalla 2024-07-01 a la(s) 19 23 56

  • Los artistas con un mayor número de canciones en Spotify tienen más streams.

    • Correlación:

      WITH track_count AS (
      SELECT
      cleaned_artist_name,
      COUNT(track_id) AS track_count,
      SUM(new_streams) AS total_streams
      FROM
      `saltoproyecto2hipotesis.datos_hipotesis.4_view_unificado`
      GROUP BY
      cleaned_artist_name
      )
      SELECT *,
      CORR(track_count.track_count, track_count.total_streams) OVER () AS correlation_value,
      FROM
      track_count
      
      
    • Test Shapiro Wilk:

      Captura de Pantalla 2024-07-01 a la(s) 19 26 44 Captura de Pantalla 2024-07-01 a la(s) 19 28 00 Captura de Pantalla 2024-07-01 a la(s) 19 28 00

    • Test Mann Whitney U:

    Captura de Pantalla 2024-07-01 a la(s) 19 28 18

    • Regresión lineal:

      Captura de Pantalla 2024-07-01 a la(s) 19 30 11 Captura de Pantalla 2024-07-01 a la(s) 19 30 22

  • Las características de la música influyen en el éxito en términos de cantidad de streams en Spotify.

    • Correlación: - Danceability: -0.1056358995505 - Valence: -0.04179795486959 - Energy: -0.025738176754 - Liveness: -0.051147025245 - Speechiness: -0.11277393515058 - Acoustciness: -0.00498576864951 - Instrumentalness: -0.044039985415

      SELECT
      CORR(new_streams, danceability) AS corr_danceability,
      CORR(new_streams, valence) AS corr_valence,
      CORR(new_streams, energy) AS corr_energy,
      CORR(new_streams, liveness) AS corr_liveness,
      CORR(new_streams, speechiness) AS corr_speechiness,
      CORR(new_streams, acousticness) AS corr_acousticness,
      CORR(new_streams, instrumentalness) AS corr_instrumentalness,
      FROM
      `saltoproyecto2hipotesis.datos_hipotesis.4_view_unificado`
      
      
    • Test Shapiro Wilk:

    Captura de Pantalla 2024-07-01 a la(s) 19 44 39 Captura de Pantalla 2024-07-01 a la(s) 19 44 46 Captura de Pantalla 2024-07-01 a la(s) 19 45 01 Captura de Pantalla 2024-07-01 a la(s) 19 45 14 Captura de Pantalla 2024-07-01 a la(s) 19 45 25 Captura de Pantalla 2024-07-01 a la(s) 19 41 40 Captura de Pantalla 2024-07-01 a la(s) 19 41 54 Captura de Pantalla 2024-07-01 a la(s) 19 42 17 Captura de Pantalla 2024-07-01 a la(s) 19 42 49 Captura de Pantalla 2024-07-01 a la(s) 19 43 06 Captura de Pantalla 2024-07-01 a la(s) 19 43 25 Captura de Pantalla 2024-07-01 a la(s) 19 43 45

    • Test Mann Whitney U:

      Captura de Pantalla 2024-07-01 a la(s) 19 49 10 Captura de Pantalla 2024-07-01 a la(s) 19 49 23

    • Regresión lineal:

      Captura de Pantalla 2024-07-01 a la(s) 20 00 53 Captura de Pantalla 2024-07-01 a la(s) 20 01 04 Captura de Pantalla 2024-07-01 a la(s) 20 01 23 Captura de Pantalla 2024-07-01 a la(s) 20 01 36 Captura de Pantalla 2024-07-01 a la(s) 20 01 45 Captura de Pantalla 2024-07-01 a la(s) 20 01 57 Captura de Pantalla 2024-07-01 a la(s) 20 02 06 Captura de Pantalla 2024-07-01 a la(s) 20 02 14 Captura de Pantalla 2024-07-01 a la(s) 20 02 34 Captura de Pantalla 2024-07-01 a la(s) 20 02 41 Captura de Pantalla 2024-07-01 a la(s) 20 02 50 Captura de Pantalla 2024-07-01 a la(s) 20 02 58 Captura de Pantalla 2024-07-01 a la(s) 20 03 07 Captura de Pantalla 2024-07-01 a la(s) 20 03 18

Conclusiones generales:

  • Consideramos que al lanzar un track debería poder estar en la mayor cantidad de plataformas posible.

  • Observamos, además, que los tracks más escuchados (60%) fueron de artistas solistas

  • La escala major es la que predomina en toda la muestra de datos, por lo tanto sugerimos considerarla al momento de la composición de un track.

  • Las características de la canción no tienen mayor influencia que la que podría llegar a tener el hecho de que los artistas que lideran las cantidades de reproducciones son conocidos/as a nivel mundial.

  • Sobre las hipótesis: en general, los datos no reflejan una distribución normal, por lo que considero necesario revisar outliers, tamaño de la muestra, entre otros.

  • Limitaciones/Próximos Pasos:

    • Explorar otros modelos a los que se puedan ajustar variables continuas que no tienen una distribución normal.
    • Profundizar en las nociones de hipótesis y pruebas de hipótesis.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published