Podstawowe operacje w R - część 3.

Eksploracja danych

Wiktoria Tybuszewska

2022-11-19

library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.2 ──
## ✔ ggplot2 3.4.0      ✔ purrr   0.3.5 
## ✔ tibble  3.1.8      ✔ dplyr   1.0.10
## ✔ tidyr   1.2.1      ✔ stringr 1.4.1 
## ✔ readr   2.1.3      ✔ forcats 0.5.2
## Warning: pakiet 'ggplot2' został zbudowany w wersji R 4.2.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
library(dplyr)

Dane pochodzą ze strony https://flixgem.com/ (wersja zbioru danych z dnia 12 marca 2021). Dane zawierają informacje na temat 9425 filmów i seriali dostępnych na Netlixie.

Zmiana formatu daty.

dane = dane %>%
  mutate(
    Release.Date = Release.Date %>% as.Date(format = '%m/%d/%Y')
    ,Netflix.Release.Date = Netflix.Release.Date %>% as.Date(format = '%m/%d/%Y')
  )

CHALLENGE 1: Jaki jest najstarszy film Woody’ego Allena dostępny na Netflixie?

dane %>% 
  filter(Director=="Woody Allen") %>% 
  select(Title, Director, Release.Date) %>% 
  arrange(Release.Date)
##                                                                    Title
## 1  Everything You Always Wanted to Know About Sex But Were Afraid to Ask
## 2                                                                Sleeper
## 3                                                         Love and Death
## 4                                          A Midsummer Nights Sex Comedy
## 5                                                                  Alice
## 6                                               Manhattan Murder Mystery
## 7                                                                  Scoop
## 8                                               Vicky Cristina Barcelona
## 9                                                         Whatever Works
## 10                                    You Will Meet a Tall Dark Stranger
## 11                                                     Midnight in Paris
## 12                                                     To Rome with Love
## 13                                                          Blue Jasmine
## 14                                                Magic in the Moonlight
## 15                                                        Irrational Man
## 16                                                          Café Society
## 17                                                          Wonder Wheel
## 18                                               A Rainy Day in New York
##       Director Release.Date
## 1  Woody Allen   1972-08-06
## 2  Woody Allen   1973-12-17
## 3  Woody Allen   1975-07-18
## 4  Woody Allen   1982-07-16
## 5  Woody Allen   1991-01-10
## 6  Woody Allen   1993-08-18
## 7  Woody Allen   2006-07-28
## 8  Woody Allen   2008-08-15
## 9  Woody Allen   2009-07-03
## 10 Woody Allen   2010-10-22
## 11 Woody Allen   2011-06-10
## 12 Woody Allen   2012-07-06
## 13 Woody Allen   2013-08-23
## 14 Woody Allen   2014-08-15
## 15 Woody Allen   2015-08-07
## 16 Woody Allen   2016-08-05
## 17 Woody Allen   2017-12-15
## 18 Woody Allen   2020-11-10

CHALLENGE 2: Jakie są trzy najwyżej oceniane komedie dostępne w języku polskim?

dane %>%
  filter(Genre %>% 
           str_detect('Comedy')) %>%
  filter(Languages %>% 
           str_detect('Polish')) %>%
  arrange(-IMDb.Score) %>%
  select(Title, IMDb.Score) %>%
  top_n(3)
## Selecting by IMDb.Score
##                    Title IMDb.Score
## 1                   Rake        8.5
## 2             Teddy Bear        8.2
## 3 Trois Couleurs - Blanc        7.6

CHALLENGE 3: Dla produkcji z lat 2019 oraz 2020 jaki jest średni czas między premierą a pojawieniem się na Netflixie?

dane %>%
  drop_na(Release.Date,Netflix.Release.Date) %>%
    mutate(rok = lubridate:: year(Release.Date),
         roznica = Netflix.Release.Date - Release.Date) %>%
  filter(rok %>% between(2019,2020)) %>%
  group_by(rok) %>%
  summarize(srednia = mean(roznica) %>% round(0))
## # A tibble: 2 × 2
##     rok srednia 
##   <dbl> <drtn>  
## 1  2019 152 days
## 2  2020  31 days

CHALLENGE 4: Jakie są najpopularniejsze tagi dla produkcji dostępnych w języku polskim?

dane %>% 
  filter(Languages %>% 
           str_detect("Polish")) %>% 
  separate_rows(Tags, sep = ',') %>%
  group_by(Tags = tolower(Tags)) %>%
  summarise(Suma = n()) %>% top_n(15) %>%
  arrange(-Suma)
## Selecting by Suma
## # A tibble: 15 × 2
##    Tags                       Suma
##    <chr>                     <int>
##  1 dramas                       50
##  2 polish movies                29
##  3 polish dramas                17
##  4 movies based on books        15
##  5 tv dramas                    15
##  6 international dramas         14
##  7 international movies         13
##  8 polish tv shows              13
##  9 comedies                     12
## 10 movies based on real life    11
## 11 crime thrillers              10
## 12 military dramas              10
## 13 thrillers                    10
## 14 crime dramas                  9
## 15 romantic dramas               9

CHALLENGE 5: Jakie są średnie oceny filmów wyprodukowanych w poszczególnych dekadach (tzn. lata 60, 70, 80, 90 etc.)?

dane %>% 
  drop_na(Release.Date) %>% 
  mutate(Rok = lubridate::year(Release.Date)) %>%
  mutate(Dekada = case_when(
    Rok <= 1950 ~ "lata 40 XX w."
    ,Rok <= 1960 ~ "lata 50 XX w."
    ,Rok <= 1970 ~ "lata 60 XX w."
    ,Rok <= 1980 ~ "lata 70 XX w."
    ,Rok <= 1990 ~ "lata 80 XX w."
    ,Rok <= 2000 ~ "lata 90 XX w."
   ,Rok <= 2010 ~ "lata 00 XXI w."
   ,Rok <= 2020 ~ "lata 10 XXI w."
   ,Rok <= 2030 ~ "lata 20 XXI w."
    )) %>% 
  group_by(Dekada) %>%
    summarize(count = n(),Średnia = mean(IMDb.Score, na.rm = TRUE) %>% 
              round(2)) %>% 
  arrange(-Średnia) %>%
  select(Dekada, count, Średnia)
## # A tibble: 9 × 3
##   Dekada         count Średnia
##   <chr>          <int>   <dbl>
## 1 lata 40 XX w.     20    7.44
## 2 lata 50 XX w.     32    7.39
## 3 lata 60 XX w.     84    7.39
## 4 lata 70 XX w.    137    7.34
## 5 lata 20 XXI w.    54    7.32
## 6 lata 80 XX w.    304    7.12
## 7 lata 10 XXI w.  6037    6.95
## 8 lata 00 XXI w.  1891    6.87
## 9 lata 90 XX w.    658    6.85