Code
library(readr)
<- read_csv("C:/Users/user/Downloads/imdb_top_1000.csv")
dataset View(dataset)
En la industria cinematográfica, las calificaciones otorgadas a las películas reflejan la percepción del público y la crítica sobre su calidad, influenciando tanto su éxito comercial como su legado cultural. Factores como la narrativa, la dirección, el elenco y el contexto histórico de su lanzamiento pueden desempeñar un papel clave en la valoración otorgada.
Este análisis tiene como objetivo responder a la pregunta: ¿Qué periodo de tiempo mostró el mejor desempeño en términos de ratings entre las 1000 películas mejor valoradas en IMDb?. Para ello, compararemos la distribución de calificaciones de películas en distintos intervalos de tiempo, con el fin de identificar patrones y tendencias a lo largo de los años.
Con el fin de responder a esta pregunta, se tomó una base de datos de la página Kaggle, publicada por el usuario Harshit Shankhdhar. El archivo, en formato .csv, contiene información relevante sobre las calificaciones de las películas, permitiendo analizar la evolución de los ratings a lo largo del tiempo.
Para comenzar, se carga la base de datos:
library(readr)
<- read_csv("C:/Users/user/Downloads/imdb_top_1000.csv")
dataset View(dataset)
Con fines ilustrativos, se realiza una vista preliminar con los primeros 10 registros del dataset:
|Poster_Link |Series_Title |Released_Year |Certificate |Runtime |Genre | IMDB_Rating|Overview | Meta_score|Director |Star1 |Star2 |Star3 |Star4 | No_of_Votes| Gross|
|:-------------------------------------------------------------------------------------------------------------------------------------------------|:---------------------------------------------|:-------------|:-----------|:-------|:-------------------------|-----------:|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------:|:--------------------|:-----------------|:--------------------|:-----------------|:----------------|-----------:|---------:|
|https://m.media-amazon.com/images/M/MV5BMDFkYTc0MGEtZmNhMC00ZDIzLWFmNTEtODM1ZmRlYWMwMWFmXkEyXkFqcGdeQXVyMTMxODk2OTU@._V1_UX67_CR0,0,67,98_AL_.jpg |The Shawshank Redemption |1994 |A |142 min |Drama | 9.3|Two imprisoned men bond over a number of years, finding solace and eventual redemption through acts of common decency. | 80|Frank Darabont |Tim Robbins |Morgan Freeman |Bob Gunton |William Sadler | 2343110| 28341469|
|https://m.media-amazon.com/images/M/MV5BM2MyNjYxNmUtYTAwNi00MTYxLWJmNWYtYzZlODY3ZTk3OTFlXkEyXkFqcGdeQXVyNzkwMjQ5NzM@._V1_UY98_CR1,0,67,98_AL_.jpg |The Godfather |1972 |A |175 min |Crime, Drama | 9.2|An organized crime dynasty's aging patriarch transfers control of his clandestine empire to his reluctant son. | 100|Francis Ford Coppola |Marlon Brando |Al Pacino |James Caan |Diane Keaton | 1620367| 134966411|
|https://m.media-amazon.com/images/M/MV5BMTMxNTMwODM0NF5BMl5BanBnXkFtZTcwODAyMTk2Mw@@._V1_UX67_CR0,0,67,98_AL_.jpg |The Dark Knight |2008 |UA |152 min |Action, Crime, Drama | 9.0|When the menace known as the Joker wreaks havoc and chaos on the people of Gotham, Batman must accept one of the greatest psychological and physical tests of his ability to fight injustice. | 84|Christopher Nolan |Christian Bale |Heath Ledger |Aaron Eckhart |Michael Caine | 2303232| 534858444|
|https://m.media-amazon.com/images/M/MV5BMWMwMGQzZTItY2JlNC00OWZiLWIyMDctNDk2ZDQ2YjRjMWQ0XkEyXkFqcGdeQXVyNzkwMjQ5NzM@._V1_UY98_CR1,0,67,98_AL_.jpg |The Godfather: Part II |1974 |A |202 min |Crime, Drama | 9.0|The early life and career of Vito Corleone in 1920s New York City is portrayed, while his son, Michael, expands and tightens his grip on the family crime syndicate. | 90|Francis Ford Coppola |Al Pacino |Robert De Niro |Robert Duvall |Diane Keaton | 1129952| 57300000|
|https://m.media-amazon.com/images/M/MV5BMWU4N2FjNzYtNTVkNC00NzQ0LTg0MjAtYTJlMjFhNGUxZDFmXkEyXkFqcGdeQXVyNjc1NTYyMjg@._V1_UX67_CR0,0,67,98_AL_.jpg |12 Angry Men |1957 |U |96 min |Crime, Drama | 9.0|A jury holdout attempts to prevent a miscarriage of justice by forcing his colleagues to reconsider the evidence. | 96|Sidney Lumet |Henry Fonda |Lee J. Cobb |Martin Balsam |John Fiedler | 689845| 4360000|
|https://m.media-amazon.com/images/M/MV5BNzA5ZDNlZWMtM2NhNS00NDJjLTk4NDItYTRmY2EwMWZlMTY3XkEyXkFqcGdeQXVyNzkwMjQ5NzM@._V1_UX67_CR0,0,67,98_AL_.jpg |The Lord of the Rings: The Return of the King |2003 |U |201 min |Action, Adventure, Drama | 8.9|Gandalf and Aragorn lead the World of Men against Sauron's army to draw his gaze from Frodo and Sam as they approach Mount Doom with the One Ring. | 94|Peter Jackson |Elijah Wood |Viggo Mortensen |Ian McKellen |Orlando Bloom | 1642758| 377845905|
|https://m.media-amazon.com/images/M/MV5BNGNhMDIzZTUtNTBlZi00MTRlLWFjM2ItYzViMjE3YzI5MjljXkEyXkFqcGdeQXVyNzkwMjQ5NzM@._V1_UY98_CR0,0,67,98_AL_.jpg |Pulp Fiction |1994 |A |154 min |Crime, Drama | 8.9|The lives of two mob hitmen, a boxer, a gangster and his wife, and a pair of diner bandits intertwine in four tales of violence and redemption. | 94|Quentin Tarantino |John Travolta |Uma Thurman |Samuel L. Jackson |Bruce Willis | 1826188| 107928762|
|https://m.media-amazon.com/images/M/MV5BNDE4OTMxMTctNmRhYy00NWE2LTg3YzItYTk3M2UwOTU5Njg4XkEyXkFqcGdeQXVyNjU0OTQ0OTY@._V1_UX67_CR0,0,67,98_AL_.jpg |Schindler's List |1993 |A |195 min |Biography, Drama, History | 8.9|In German-occupied Poland during World War II, industrialist Oskar Schindler gradually becomes concerned for his Jewish workforce after witnessing their persecution by the Nazis. | 94|Steven Spielberg |Liam Neeson |Ralph Fiennes |Ben Kingsley |Caroline Goodall | 1213505| 96898818|
|https://m.media-amazon.com/images/M/MV5BMjAxMzY3NjcxNF5BMl5BanBnXkFtZTcwNTI5OTM0Mw@@._V1_UX67_CR0,0,67,98_AL_.jpg |Inception |2010 |UA |148 min |Action, Adventure, Sci-Fi | 8.8|A thief who steals corporate secrets through the use of dream-sharing technology is given the inverse task of planting an idea into the mind of a C.E.O. | 74|Christopher Nolan |Leonardo DiCaprio |Joseph Gordon-Levitt |Elliot Page |Ken Watanabe | 2067042| 292576195|
|https://m.media-amazon.com/images/M/MV5BMmEzNTkxYjQtZTc0MC00YTVjLTg5ZTEtZWMwOWVlYzY0NWIwXkEyXkFqcGdeQXVyNzkwMjQ5NzM@._V1_UX67_CR0,0,67,98_AL_.jpg |Fight Club |1999 |A |139 min |Drama | 8.8|An insomniac office worker and a devil-may-care soapmaker form an underground fight club that evolves into something much, much more. | 66|David Fincher |Brad Pitt |Edward Norton |Meat Loaf |Zach Grenier | 1854740| 37030102|
A su vez, se revisan sus dimensiones:
[1] 1000 16
El print anterior, permite afirmar que el dataset cuenta con un total de 1000 filas y 16 columnas.
Teniendo claro que esta base de datos contiene 16 variables diferentes, se presenta a continuación una tabla que contiene información detallada de cada una de ellas.
Variable | Definición | Tipo | Indicadores |
---|---|---|---|
Poster_Link | Enlace a la imagen del póster de la película/serie. | Cualitativa, nominal | URL de la imagen del póster. |
Series_Title | Título de la película/serie. | Cualitativa, nominal | Nombre del contenido. |
Released_Year | Año en el que la película/serie fue estrenada. | Cuantitativa, discreta | Año entre 1900 y 2025. |
Certificate | Clasificación por edades asignada al contenido. | Cualitativa, ordinal | Clasificaciones como PG, R, etc. |
Runtime | Duración de la película/serie en minutos. | Cuantitativa, continua | Número de minutos (e.g., 120). |
Genre | Género(s) asociados al contenido. | Cualitativa, nominal | Acción, Drama, Comedia, etc. |
IMDB_Rating | Calificación promedio otorgada por los usuarios en IMDB. | Cuantitativa, continua | Puntaje de 0 a 10. |
Overview | Resumen breve de la película/serie. | Cualitativa, nominal | Texto descriptivo breve. |
Meta_score | Puntuación otorgada en Metacritic. | Cuantitativa, continua | Puntaje de 0 a 100. |
Director | Nombre del director de la película/serie. | Cualitativa, nominal | Nombre completo del director. |
Star1 | Nombre del actor/actriz principal. | Cualitativa, nominal | Nombre completo del actor principal. |
Star2 | Nombre del segundo actor/actriz principal. | Cualitativa, nominal | Nombre completo del segundo actor. |
Star3 | Nombre del tercer actor/actriz principal. | Cualitativa, nominal | Nombre completo del tercer actor. |
Star4 | Nombre del cuarto actor/actriz principal. | Cualitativa, nominal | Nombre completo del cuarto actor. |
No_of_Votes | Número total de votos recibidos en IMDB. | Cuantitativa, discreta | Número mayor o igual a 0. |
Gross | Ingresos totales generados en taquilla (en dólares). | Cuantitativa, continua | Cantidad en dólares. |
Con el fin de dar inicio al descriptivo de los datos, se utiliza la función summary, para obtener un resumen estadístico con las principales medidas de la base de datos:
Poster_Link Series_Title Released_Year Certificate
Length:1000 Length:1000 Length:1000 Length:1000
Class :character Class :character Class :character Class :character
Mode :character Mode :character Mode :character Mode :character
Runtime Genre IMDB_Rating Overview
Length:1000 Length:1000 Min. :7.600 Length:1000
Class :character Class :character 1st Qu.:7.700 Class :character
Mode :character Mode :character Median :7.900 Mode :character
Mean :7.949
3rd Qu.:8.100
Max. :9.300
Meta_score Director Star1 Star2
Min. : 28.00 Length:1000 Length:1000 Length:1000
1st Qu.: 70.00 Class :character Class :character Class :character
Median : 79.00 Mode :character Mode :character Mode :character
Mean : 77.97
3rd Qu.: 87.00
Max. :100.00
NA's :157
Star3 Star4 No_of_Votes Gross
Length:1000 Length:1000 Min. : 25088 Min. : 1305
Class :character Class :character 1st Qu.: 55526 1st Qu.: 3253559
Mode :character Mode :character Median : 138549 Median : 23530892
Mean : 273693 Mean : 68034751
3rd Qu.: 374161 3rd Qu.: 80750894
Max. :2343110 Max. :936662225
NA's :169
El resumen estadístico de las variables numéricas y categóricas proporciona una primera visión sobre la estructura y distribución de los datos antes de aplicar técnicas de limpieza. Se identificó la presencia de valores faltantes en métricas clave como Meta_score (157 NA’s) y Gross (169 NA’s), lo que indica la necesidad de estrategias de imputación o exclusión de registros incompletos. Además, los valores mínimo y máximo en estas métricas presentan una variabilidad considerable, lo que sugiere la posible presencia de valores atípicos o escalas inconsistentes que deberán evaluarse en detalle.
En cuanto a la variable No_of_Votes, se observa una diferencia notable entre la mediana (138,549 votos) y la media (273,693 votos), lo que indica una distribución sesgada con posibles valores extremos que pueden afectar el análisis. Asimismo, la variable Released_Year muestra un rango de años bien definido, lo que permite analizar la evolución del desempeño de las películas a lo largo del tiempo sin anomalías evidentes.
Dado que estos datos aún no han sido sometidos a un proceso de limpieza o imputación, el siguiente paso consistirá en abordar la gestión de valores faltantes y la detección de valores atípicos. Posteriormente, se podrá realizar un análisis más preciso sobre las tendencias en las calificaciones y el éxito de las películas en distintos períodos de tiempo.
Ahora, se da inicio a la revisión de valores faltantes, realizando un conteo de los valores NA presentes en cada columna de la base de datos:
Poster_Link Series_Title Released_Year Certificate Runtime
0 0 0 101 0
Genre IMDB_Rating Overview Meta_score Director
0 0 0 157 0
Star1 Star2 Star3 Star4 No_of_Votes
0 0 0 0 0
Gross
169
De lo anterior, es evidente que los datos faltantes en el dataset, se encuentran presentes únicamente en las columnas correspondientes a variables cuantitativas.
Para un total de 427 datos NA, que se verifica a través de la función sum().
[1] 427
Al detectar 427 registros con datos faltantes, es pertinente realizar un tratamiento a todos ellos. Sin embargo, primero se generan varios gráficos para comprender con mayor claridad la situación del dataset. Estos gráficos también servirán posteriormente para realizar comparaciones una vez que los datos hayan sido tratados.
Variables sorted by number of missings:
Variable Count
Gross 0.169
Meta_score 0.157
Certificate 0.101
Poster_Link 0.000
Series_Title 0.000
Released_Year 0.000
Runtime 0.000
Genre 0.000
IMDB_Rating 0.000
Overview 0.000
Director 0.000
Star1 0.000
Star2 0.000
Star3 0.000
Star4 0.000
No_of_Votes 0.000
Con el mismo propósito, se genera un missingness map:
Gracias a este gráfico (Figure 3), se puede afirmar que sólo el 2% de los datos contienen valores NA.
Para dar inicio al tratamiento, se utiliza la función na.omit() para eliminar todas las filas con valores NA en el dataset:
Con el fin de verificar que las gráficas pre y post tratamiento se mantengan iguales, se generan dos histogramas para la variable Gross:
library(ggplot2)
ggplot(dataset, aes(x = Gross)) +
geom_histogram(fill = "blue", color = "blue", bins = 30) +
ggtitle("Original Data") +
xlab("Gross") +
ylab("Frequency") +
theme_minimal()
library(ggplot2)
ggplot(dataset_limpio, aes(x = Gross)) +
geom_histogram(fill = "lightblue", color = "lightblue", bins = 30) +
ggtitle("Litwise Deletion") +
xlab("Gross") +
ylab("Frequency") +
theme_minimal()
Estos gráficos (Figure 4 y Figure 5), demustran que la distribución de cada variable se mantiene igual, aún tras haber eliminados los datos faltantes.
Por supuesto, se genera un nuevo Missingness Map, con los datos NA eliminados:
Como se puede observar, se obtuvo un 0% de datos faltantes, por lo tanto, se puede afirmar que el tratamiento fue exitoso.
Luego, se realiza un nuevo resumen estadístico sin valores faltantes, con el objetivo de abordar de una mejor manera la pregunta planteada al comienzo del EDA:
Poster_Link Series_Title Released_Year Certificate
Length:714 Length:714 Length:714 Length:714
Class :character Class :character Class :character Class :character
Mode :character Mode :character Mode :character Mode :character
Runtime Genre IMDB_Rating Overview
Length:714 Length:714 Min. :7.600 Length:714
Class :character Class :character 1st Qu.:7.700 Class :character
Mode :character Mode :character Median :7.900 Mode :character
Mean :7.937
3rd Qu.:8.100
Max. :9.300
Meta_score Director Star1 Star2
Min. : 28.00 Length:714 Length:714 Length:714
1st Qu.: 70.00 Class :character Class :character Class :character
Median : 78.00 Mode :character Mode :character Mode :character
Mean : 77.16
3rd Qu.: 86.00
Max. :100.00
Star3 Star4 No_of_Votes Gross
Length:714 Length:714 Min. : 25229 Min. : 1305
Class :character Class :character 1st Qu.: 96010 1st Qu.: 6157408
Mode :character Mode :character Median : 236603 Median : 34850146
Mean : 356135 Mean : 78513585
3rd Qu.: 507792 3rd Qu.:102464067
Max. :2343110 Max. :936662225
Tras la limpieza de datos, el conjunto final incluye 714 películas, lo que indica que la eliminación de valores faltantes tuvo un impacto significativo en la base de datos original de 1000 registros. Esto sugiere que los 427 valores NA estaban distribuidos en múltiples columnas, lo que llevó a que muchas filas fueran eliminadas al aplicar la limpieza. La eliminación de registros con valores faltantes garantiza que el análisis posterior se base en datos completos, reduciendo posibles sesgos derivados de datos incompletos.
En cuanto a la variable IMDB_Rating, la media (7.94) y la mediana (7.90) son cercanas, lo que sugiere una distribución relativamente simétrica de los ratings. Sin embargo, variables como No_of_Votes y Gross presentan una gran dispersión, con diferencias notables entre los cuartiles y valores máximos elevados, lo que sugiere la posible presencia de películas con una popularidad o recaudación atípicamente alta.
La reducción en el número de registros garantiza que los análisis posteriores se basen en datos más confiables. A partir de esta limpieza, el siguiente paso será explorar la distribución de calificaciones a lo largo del tiempo, identificando periodos con mejor desempeño en términos de ratings.
A continuación se presenta un gráfico de líneas, con el objetivo de comprender las variaciones que ha sufrido el rating de las películas a lo largo del tiempo:
Tras analizar el gráfico anterior (Figure 7), es evidente que los mejores periodos fueron los abarcados entre 1970 - 1975 y 1990 - 1995. Por lo que se utilizará un diagrama de caja y bigotes para estudiar ambos resultados:
Observando ambos diagramas (Figure 8), queda claro que existe una diferencia notable en la distribución de las calificaciones. Si bien ambos períodos presentan una dispersión considerable, el intervalo 1990-1995 muestra una mediana más alta, lo que indica que la mayoría de las películas en este rango de años obtuvieron calificaciones superiores en comparación con las de 1970-1975. Además, la amplitud intercuartílica en el segundo período es menor, sugiriendo una menor variabilidad en los ratings y una mayor concentración de películas con puntuaciones elevadas. Aunque ambos grupos presentan valores atípicos, el período 1990-1995 exhibe más valores extremos en el rango superior, lo que sugiere la presencia de películas altamente valoradas. Estos resultados indican que, en términos de rating, 1990-1995 fue una mejor época para IMDb, con un mayor reconocimiento y apreciación del público hacia las películas de esos años.
Ahora, se genera un histograma para entender con mayor claridad la distribución de los ratings entre 1990 - 1995, y de esta manera sacar algunas conclusiones sobre el mismo:
A su vez, se calcula la curtosis a través del siguiente algoritmo:
library(moments)
<- subset(dataset_limpio, Released_Year >= 1990 & Released_Year <= 1995)
dataset_filtrado <- kurtosis(dataset_filtrado$IMDB_Rating)
curtosis_IMDB
print(paste("La curtosis de los ratings de IMDb entre 1990 y 1995 es:", curtosis_IMDB))
[1] "La curtosis de los ratings de IMDb entre 1990 y 1995 es: 4.46384810020351"
Del gráfico anterior (Figure 9) es importante mencionar que al tener asimetría positiva, queda claro que la mayoría de las películas tienen calificaciones entre 7.5 y 8.5, pero hay algunas con ratings muy altos que jalan la distribución hacia la derecha. Además, la curtosis de 4.46 indica que la distribución es leptocúrtica, es decir, los valores están muy concentrados cerca de la media, pero con colas más pesadas. Esto es bueno porque muestra que en este periodo hubieron muchas películas con calidad bastante pareja, pero también varias con calificaciones por encima de 9.0. La presencia de estos valores atípicos en la parte alta sugiere que este fue un momento clave en la industria del cine, donde no solo surigeron películas buenas en general, sino que también aparecieron verdaderos clásicos que se volvieron referentes. En conclusión y dando respuesta a la pregunta que se planteó al inicio de este EDA, el mejor periodo en términos de ratings del top 1000 películas IMDb, fue, 1990-1995.
Haciendo uso de esta base de datos, es posible resolver muchas más dudas relacionadas a la industria del cine, basándonos en las calificaciones brindadas por los usuarios de IMDB. Algunas de ellas podrían ser:
¿Las películas con más votos en IMDb tienden a tener ratings más altos o más bajos?
¿Cuál género ha tenido el mejor performance en los últimos 10 años?
¿Existen directores o actores cuyos proyectos tengan ratings consistentemente altos o bajos?
¿Hay géneros que tienen raitings más consistentes que otros?
¿Cuántas películas tienen un rating superior a 9.0 y de qué géneros son?