Marta Oliver(obelmar@alumni.uv.es)
Carlos Rodriguez(carogon4@alumni.uv.es)
Mar Valldecabres(valldeca@alumni.uv.es).
Universitat de ValènciaTrabajo elaborado para la asignatura “Programación y manejo de datos en la era del Big Data” de la Universitat de València durante el curso 2020-2021. La página web de la asignatura puede verse aquí: https://perezp44.github.io/intro-ds-20-21-web/. Los trabajos de nuestros compañeros de curso pueden verse aquí.
Este trabajo consiste en un estudio de las diferentes películas y series de netflix. Con este análisis queremos poner en práctica lo estudiado en la asignatura de Programación y manejo de datos en la era del Big Data.
Netflix es un servicio de streaming que funciona mediante suscripción y permite a sus usuarios ver series y películas, sin anuncios, a través de cualquier dispositivo conectado a internet.
También se pueden descargar series y películas en cualquier dispositivo iOS, Android, o Windows 10 y verlas sin necesidad de conexión a internet.
La compañía no tuvo éxito desde un comienzo, pero las buenas acciones de sus desarrolladores la llevaron a obtener las ganancias que tiene hoy en día.
En sus principios, Netflix era una compañía que alquilaba DVD’s, se fundó en 1997, y fue en 1998 donde alquiló su primer DVD. La empresa comenzó alquilando películas por esta modalidad.
En 2007, Netflix inicia su servicio de VOD en Estados Unidos para computadoras personales.
A partir de 2008 se agregan diferentes opciones para acceder al catálogo por retransmisión en directo.
En 2009 su catálogo físico ofrece 100 mil títulos y su clientela supera los 10 millones de suscriptores.
En 2011, la empresa inicia operaciones por primera vez fuera del territorio estadounidense y canadiense, ofreciendo su catálogo por retransmisión en directo en la región de América Latina y el Caribe.
En 2012 ofrece sus servicios en algunos países de Europa.
En 2016 ofrece sus contenidos a todo el mundo con excepción de la región de Crimea, y los territorios de Corea del Norte, China y Siria.
El contenido de Netflix varía según la región, y puede cambiar con el tiempo. Su oferta incluye una gran variedad de galardonados títulos originales de Netflix, series, películas, documentales y mucho más.
A lo largo de este análisis vamos a utilizar las siguientes rutas de datos.
netflix <- read_excel("./Datos/netflix_titles.xlsx")
netflix <- netflix %>% select(-show_id, -cast, -description, -rating)
suscriptores <- read_excel("./Datos/suscriptores11.xlsx")
La tabla ‘netflix’ nos da los datos de las Movies y TVShows que Netflix tiene en su página. Nos indica el título de cada una de ellas, su director, la ciudad donde fueron producidas, la fecha que se estrenaron y la que se subieron a la plataforma de Netflix, la duración y el género.
Con la función anterior hemos arreglado los datos de netflix_titles y eliminado las columnas ‘show_id’, ‘coast’, ‘description’ y ‘ratiing’.
cuatro <- netflix %>% group_by(type, release_year)%>% count()
cuatro1 <- ggplot(cuatro, aes(x = release_year, y = n)) + geom_area(aes(color = type, fill = type),
alpha = 0.5, position=position_dodge(0.8))+ scale_color_manual(values=c("#00AFBB","#E7B800"))+ scale_fill_manual(values=c("#00AFBB","#E7B800"))
cuatro1+labs(title = "TVShows y Movies en el tiempo")
La compañía no tuvo éxito desde un comienzo, pero las buenas acciones de sus desarrolladores la llevaron a obtener las ganancias que tiene hoy en día.
En sus principios, Netflix era una compañía que alquilaba DVD’s, se fundó en 1997, y fue en 1998 donde alquiló su primer DVD. La empresa comenzó alquilando películas por esta modalidad.
Lo primero que vamos a hacer es ordenar las películas y series de más antigua a más nueva y después mover la columna “release_year” a la izquierda de todo.
grafico2 <- netflix %>% arrange(release_year)
grafico2.1 <- grafico2 %>% select(release_year, everything())
Cogiendo como referencia la tabla del trabajo de Noelia Sánchez, Ignacio Montava y Andreu Esparza, hemos realizado la siguiene tabla en a que se pueden buscar las distintas Movies y TV Show por diferentes filtros.
Como podemos observar en la tabla anterior, la serie más antigua que existe en la plataforma de Netflix es “Pioneers: First Women Filmmakers”
La película más antigua que se encuentra en la plataforma es, “Prelude to War”, una película estadounidense basada en la Segunda Guerra Mundial y cuyo director es Frank Capra.
En la siguiente tabla se pueden observar los diez directores que más películas han realizado.
grafico4 <- netflix %>% filter(type == "Movie") %>%group_by(director) %>% summarise(Películas=n()) %>% na.omit(datos) %>% slice_max(Películas,n =10)
grafico41 <- grafico4 %>% mutate(director = forcats::as_factor(director))
director | Películas |
---|---|
Raúl Campos, Jan Suter | 18 |
Marcus Raboy | 14 |
Jay Karas | 13 |
Jay Chapman | 12 |
Martin Scorsese | 9 |
Steven Spielberg | 9 |
David Dhawan | 8 |
Johnnie To | 8 |
Lance Bangs | 8 |
Cathy Garcia-Molina | 7 |
Hakan Algül | 7 |
Ryan Polito | 7 |
S.S. Rajamouli | 7 |
Shannon Hartman | 7 |
De forma más visual se puede observar lo anteriormente mostrado en el siguiente gráfico. Raúl Campos y Jan Suter son los directores con diferencia que más películas han realizado.
graficodirectores1 <- ggplot (grafico41, aes(x=director, y = Películas), aes(fct_rev(director))) + geom_bar(stat="identity", fill = "red") + coord_flip() + labs(x = "Director", y = "Número de películas")+labs(title = "Diez directores con más películas")
ggplotly(graficodirectores1)
El país con más películas producidas que hay en la plataforma de Netflix es Estados Unidos y el segundo es India.
Sorprende que India sea de los paises que tiene más producción de cine y esto se debe a la industria cinematográfica ubicada en una de sus ciudades más pobladas, Bombay. Esta ha desbancado en el número de producción de películas a Hollywood, y es que en Bollywood se producen cada año más de 1.000 cintas o películas.
grafico4 <- netflix %>% filter(type == "Movie") %>%group_by(country) %>% summarise(Países=n()) %>% na.omit(datos) %>% slice_max(Países,n =10)
grafico41 <- grafico4 %>% mutate(country = forcats::as_factor(country))
d <- ggplot (grafico41,aes(x=country, y = Países), aes(fct_rev(country))) + geom_bar(stat="identity", fill = "black") + coord_flip()
d + labs(title = "Gráfico de los 10 países con más películas producidas",
caption = "Datos provenientes del netflix_titles dataset",
x = "País",
y = "Número de Películas",
color = "Especie de lirio")
Hemos creado un mapa para mostrar estos diez paises.
world <- rnaturalearth::ne_countries(scale = "medium", returnclass = "sf")
world1 <- world %>% filter (admin %in% c("Japan", "Hong Kong", "France", "Mexico", "Turkey", "Spain", "Canada", "United Kingdom", "India", "United States of America"))
world2 <- world %>% filter(!(admin %in% c("Japan", "Hong Kong", "France", "Mexico", "Turkey", "Spain", "Canada", "United Kingdom", "India", "United States")))
world3 <- ggplot () + geom_sf(data = world2) + geom_sf(data = world1, fill = "black") + labs(title = "Países con más películas en Netflix", caption = "Elaboracion propia") + theme(panel.grid.major = element_line(color = gray(.8), linetype = "dashed", size = 0.05), panel.background = element_rect(fill = "gray")) + coord_sf(xlim = c(-160, 160), ylim = c(-50, 80), expand = FALSE) +
annotate(geom = "text", label = "1482", size = 4, x = -72.5, y = 43, color = "RED") +
annotate(geom = "text", label = "80", size = 4, x = -4, y = 42.5, color = "RED") +
annotate(geom = "text", label = "170", size = 4, x = -1, y = 55, color = "RED") +
annotate(geom = "text", label = "50", size = 4, x = 3, y = 50,color = "RED") +
annotate(geom = "text", label = "55", size = 4, x = 35.18, y = 38.84, color = "RED") +
annotate(geom = "text", label = "724", size = 4, x = 79.89, y = 20.95, color = "RED") +
annotate(geom = "text", label = "88", size = 4, x = -101.11, y = 55.29, color = "RED") +
annotate(geom = "text", label = "54", size = 4, x = -99.27, y = 19.67, color = "RED")+
annotate(geom = "text", label = "49", size = 4, x = 114.10, y = 22.39, color = "RED")+
annotate(geom = "text", label = "47", size = 4, x = 139.41, y = 36.72, color = "RED")
world3
Con este gráfico podemos ver que en la oferta de Netflix predominan las películas frente a las series. El porcentaje de películas es de aproximadamente un 68% frente al 32% de series.
grafico6 <- netflix %>% group_by(type) %>% summarise(NN=n()) %>% mutate(prob = prop.table(NN)*100)
grafico61 <- ggplot(grafico6, aes(x = "", y = prob, fill = prob))+geom_bar(stat="identity", color = "white") + geom_text(aes(label=prob),position=position_stack(vjust=0.5), color="white", size=5) + coord_polar(theta="y") + theme_void()
grafico61+labs(title = "Movies Vs Tv SHows")
En este apartado hemos tenido que modificar en primer lugar, la columna donde se mostraba la duración, ya que inicialmente la celda contenía letras y números (ejemplo: 90 min), y crear dos nuevas columnas donde en una pusiera el número y en la otra las letras. De este modo poder trabajar los datos. En segundo lugar, habiendo creado las dos columnas, hemos tenido que modificar el formato de los datos de la columna que contenía los números, ya que estaba en formato letra, y no leía bien los datos. Dicho esto, a continuación podemos observar las diez películas más largas de la plataforma Netflix.
i <- separate(data = netflix, col = "duration", into = c("duracion", "tipo"), sep = " ") %>% mutate(duracion = as.numeric(duracion)) %>% filter (tipo == "min") %>% top_n(duracion, n = 10) %>% mutate(duracion = forcats::as_factor(duracion))
type | title | director | country | date_added | release_year | duracion | tipo | listed_in |
---|---|---|---|---|---|---|---|---|
Movie | The Gospel of Luke | David Batty | United States, United Kingdom, Morocco | October 19, 2018 | 2015 | 205 | min | Dramas, Faith & Spirituality |
Movie | Jodhaa Akbar | Ashutosh Gowariker | India | October 1, 2018 | 2008 | 214 | min | Action & Adventure, Dramas, International Movies |
Movie | The Irishman | Martin Scorsese | United States | November 27, 2019 | 2019 | 209 | min | Dramas |
Movie | Doctor Zhivago | David Lean | United States, Italy, United Kingdom, Liechtenstein | November 1, 2019 | 1965 | 200 | min | Classic Movies, Dramas, Romantic Movies |
Movie | The Lord of the Rings: The Return of the King | Peter Jackson | New Zealand, United States | January 1, 2020 | 2003 | 201 | min | Action & Adventure, Sci-Fi & Fantasy |
Movie | Lagaan | Ashutosh Gowariker | India | December 8, 2017 | 2001 | 224 | min | Dramas, International Movies, Music & Musicals |
Movie | Sangam | Raj Kapoor | India | December 31, 2019 | 1964 | 228 | min | Classic Movies, Dramas, International Movies |
Movie | Black Mirror: Bandersnatch | NA | United States | December 28, 2018 | 2018 | 312 | min | Dramas, International Movies, Sci-Fi & Fantasy |
Movie | Elephants Dream 4 Hour | Bassam Kurdali | Netherlands | August 23, 2018 | 2006 | 196 | min | International Movies, Sci-Fi & Fantasy |
Movie | What’s Your Raashee? | Ashutosh Gowariker | India | August 15, 2018 | 2009 | 203 | min | Comedies, International Movies, Music & Musicals |
En este apartado hemos aislado los datos de TVShows para poder realizar el gráfico correspondiente.
i2 <- separate(data = netflix, col = "duration", into = c("duracion", "tipo"), sep = " ") %>% mutate(duracion = as.numeric(duracion)) %>% filter (tipo == "Season") %>% mutate(duracion = forcats::as_factor(duracion))
grafico4.8 <- i2 %>% group_by(release_year) %>% summarise(NN=n())
b <- ggplot (grafico4.8, aes(x = release_year, y = NN)) + geom_bar(stat = "identity", fill = "steelblue")
b + labs(title = "Gráfico: TVShows por año",
subtitle = "(diferenciando por año)",
caption = "Datos provenientes del netflix_titles dataset",
x = "Release_year",
y = "NN",
color = "Especie de lirio")
suscriptores %>%
ggplot( aes(x=Año, y=Suscriptors, group=Zonas_geográficas, color=Zonas_geográficas)) +
geom_line() +
geom_point() +
transition_reveal(Año)
Con este gráfico podemos ver la evolución de los nuevos suscriptores analizando los datos del mes de enero de los años 2018, 2019 y 2020.
Podemos observar que Europa es la que ha experimentado un mayor crecimiento de suscriptores desde hace tres años hasta ahora con una diferencia de mas de 40.000 suscriptores en este mes desde 2018 hasta 2020.
EEUU y Canadá ya contaban con un gran número de suscriptores en marzo de 2018 y siguen siendo la zona que mas suscriptores tienen. Al mismo tiempo que la zona de Asia tienen un número mucho menor.
No hemos podido encontrar los datos de este año enteros para poder ver la evolución pero sí se puede afirmar que Netflix ha duplicado el número de suscriptores gracias a la cuarentena por el coronavirus duplicando también sus beneficios y las expectativas para este periodo.
sessioninfo::session_info() %>% details::details(summary = 'current session info')
current session info
- Session info ---------------------------------------------------------------
setting value
version R version 4.0.2 (2020-06-22)
os Windows 10 x64
system x86_64, mingw32
ui RTerm
language (EN)
collate Spanish_Spain.1252
ctype Spanish_Spain.1252
tz Europe/Paris
date 2020-12-17
- Packages -------------------------------------------------------------------
package * version date lib source
assertthat 0.2.1 2019-03-21 [1] CRAN (R 4.0.3)
backports 1.2.0 2020-11-02 [1] CRAN (R 4.0.3)
broom 0.7.2 2020-10-20 [1] CRAN (R 4.0.3)
cellranger 1.1.0 2016-07-27 [1] CRAN (R 4.0.3)
class 7.3-17 2020-04-26 [2] CRAN (R 4.0.2)
classInt 0.4-3 2020-04-07 [1] CRAN (R 4.0.3)
cli 2.2.0 2020-11-20 [1] CRAN (R 4.0.2)
clipr 0.7.1 2020-10-08 [1] CRAN (R 4.0.3)
colorspace 2.0-0 2020-11-11 [1] CRAN (R 4.0.3)
crayon 1.3.4 2017-09-16 [1] CRAN (R 4.0.3)
crosstalk 1.1.0.1 2020-03-13 [1] CRAN (R 4.0.3)
data.table 1.13.2 2020-10-19 [1] CRAN (R 4.0.3)
DBI 1.1.0 2019-12-15 [1] CRAN (R 4.0.3)
dbplyr 2.0.0 2020-11-03 [1] CRAN (R 4.0.3)
desc 1.2.0 2018-05-01 [1] CRAN (R 4.0.3)
details 0.2.1 2020-01-12 [1] CRAN (R 4.0.3)
digest 0.6.27 2020-10-24 [1] CRAN (R 4.0.3)
dplyr * 1.0.2 2020-08-18 [1] CRAN (R 4.0.3)
e1071 1.7-4 2020-10-14 [1] CRAN (R 4.0.3)
ellipsis 0.3.1 2020-05-15 [1] CRAN (R 4.0.3)
evaluate 0.14 2019-05-28 [1] CRAN (R 4.0.3)
fansi 0.4.1 2020-01-08 [1] CRAN (R 4.0.3)
farver 2.0.3 2020-01-16 [1] CRAN (R 4.0.3)
fastmap 1.0.1 2019-10-08 [1] CRAN (R 4.0.3)
forcats * 0.5.0 2020-03-01 [1] CRAN (R 4.0.3)
formatR 1.7 2019-06-11 [1] CRAN (R 4.0.3)
fs 1.5.0 2020-07-31 [1] CRAN (R 4.0.3)
gapminder * 0.3.0 2017-10-31 [1] CRAN (R 4.0.3)
generics 0.1.0 2020-10-31 [1] CRAN (R 4.0.3)
gganimate * 1.0.7 2020-10-15 [1] CRAN (R 4.0.3)
ggplot2 * 3.3.2 2020-06-19 [1] CRAN (R 4.0.3)
ggThemeAssist * 0.1.5 2016-08-13 [1] CRAN (R 4.0.3)
gifski 0.8.6 2018-09-28 [1] CRAN (R 4.0.3)
glue 1.4.2 2020-08-27 [1] CRAN (R 4.0.3)
gt * 0.2.2 2020-11-16 [1] Github (rstudio/gt@fcd2167)
gtable 0.3.0 2019-03-25 [1] CRAN (R 4.0.3)
haven 2.3.1 2020-06-01 [1] CRAN (R 4.0.3)
here 1.0.0 2020-11-15 [1] CRAN (R 4.0.2)
highr 0.8 2019-03-20 [1] CRAN (R 4.0.3)
hms 0.5.3 2020-01-08 [1] CRAN (R 4.0.3)
htmltools 0.5.0 2020-06-16 [1] CRAN (R 4.0.3)
htmlwidgets 1.5.2 2020-10-03 [1] CRAN (R 4.0.3)
httpuv 1.5.4 2020-06-06 [1] CRAN (R 4.0.3)
httr 1.4.2 2020-07-20 [1] CRAN (R 4.0.3)
jsonlite 1.7.1 2020-09-07 [1] CRAN (R 4.0.3)
KernSmooth 2.23-17 2020-04-26 [2] CRAN (R 4.0.2)
klippy * 0.0.0.9500 2020-11-16 [1] Github (rlesur/klippy@378c247)
knitr * 1.30 2020-09-22 [1] CRAN (R 4.0.3)
labeling 0.4.2 2020-10-20 [1] CRAN (R 4.0.3)
later 1.1.0.1 2020-06-05 [1] CRAN (R 4.0.3)
lattice 0.20-41 2020-04-02 [2] CRAN (R 4.0.2)
lazyeval 0.2.2 2019-03-15 [1] CRAN (R 4.0.3)
lifecycle 0.2.0 2020-03-06 [1] CRAN (R 4.0.3)
lubridate 1.7.9.2 2020-11-13 [1] CRAN (R 4.0.3)
magrittr 2.0.1 2020-11-17 [1] CRAN (R 4.0.3)
mime 0.9 2020-02-04 [1] CRAN (R 4.0.3)
miniUI 0.1.1.1 2018-05-18 [1] CRAN (R 4.0.3)
modelr 0.1.8 2020-05-19 [1] CRAN (R 4.0.3)
munsell 0.5.0 2018-06-12 [1] CRAN (R 4.0.3)
pillar 1.4.7 2020-11-20 [1] CRAN (R 4.0.2)
pkgconfig 2.0.3 2019-09-22 [1] CRAN (R 4.0.3)
plotly * 4.9.2.1 2020-04-04 [1] CRAN (R 4.0.3)
plyr 1.8.6 2020-03-03 [1] CRAN (R 4.0.3)
png 0.1-7 2013-12-03 [1] CRAN (R 4.0.3)
prettyunits 1.1.1 2020-01-24 [1] CRAN (R 4.0.3)
progress 1.2.2 2019-05-16 [1] CRAN (R 4.0.3)
promises 1.1.1 2020-06-09 [1] CRAN (R 4.0.3)
purrr * 0.3.4 2020-04-17 [1] CRAN (R 4.0.3)
R6 2.5.0 2020-10-28 [1] CRAN (R 4.0.3)
Rcpp 1.0.5 2020-07-06 [1] CRAN (R 4.0.3)
reactable * 0.2.3 2020-10-04 [1] CRAN (R 4.0.3)
reactR 0.4.3 2020-07-12 [1] CRAN (R 4.0.3)
readr * 1.4.0 2020-10-05 [1] CRAN (R 4.0.3)
readxl * 1.3.1 2019-03-13 [1] CRAN (R 4.0.3)
reprex 0.3.0 2019-05-16 [1] CRAN (R 4.0.3)
rgeos 0.5-5 2020-09-07 [1] CRAN (R 4.0.3)
rlang 0.4.8 2020-10-08 [1] CRAN (R 4.0.3)
rmarkdown 2.5 2020-10-21 [1] CRAN (R 4.0.3)
rnaturalearth 0.1.0 2017-03-21 [1] CRAN (R 4.0.3)
rnaturalearthdata 0.1.0 2017-02-21 [1] CRAN (R 4.0.3)
rprojroot 2.0.2 2020-11-15 [1] CRAN (R 4.0.2)
rstudioapi 0.13 2020-11-12 [1] CRAN (R 4.0.3)
rvest 0.3.6 2020-07-25 [1] CRAN (R 4.0.3)
scales * 1.1.1 2020-05-11 [1] CRAN (R 4.0.3)
sessioninfo 1.1.1 2018-11-05 [1] CRAN (R 4.0.3)
sf 0.9-6 2020-09-13 [1] CRAN (R 4.0.3)
shiny 1.5.0 2020-06-23 [1] CRAN (R 4.0.3)
sp 1.4-4 2020-10-07 [1] CRAN (R 4.0.3)
stringi 1.5.3 2020-09-09 [1] CRAN (R 4.0.3)
stringr * 1.4.0 2019-02-10 [1] CRAN (R 4.0.3)
tibble * 3.0.4 2020-10-12 [1] CRAN (R 4.0.3)
tidyr * 1.1.2 2020-08-27 [1] CRAN (R 4.0.3)
tidyselect 1.1.0 2020-05-11 [1] CRAN (R 4.0.3)
tidyverse * 1.3.0 2019-11-21 [1] CRAN (R 4.0.3)
tweenr 1.0.1 2018-12-14 [1] CRAN (R 4.0.3)
units 0.6-7 2020-06-13 [1] CRAN (R 4.0.3)
vctrs 0.3.5 2020-11-17 [1] CRAN (R 4.0.3)
viridisLite 0.3.0 2018-02-01 [1] CRAN (R 4.0.3)
withr 2.3.0 2020-09-22 [1] CRAN (R 4.0.3)
xfun 0.19 2020-10-30 [1] CRAN (R 4.0.3)
xml2 1.3.2 2020-04-23 [1] CRAN (R 4.0.3)
xtable 1.8-4 2019-04-21 [1] CRAN (R 4.0.3)
yaml 2.2.1 2020-02-01 [1] CRAN (R 4.0.3)
[1] C:/Users/usuario1/Documents/R/win-library/4.0
[2] C:/Program Files/R/R-4.0.2/library