import pandas as pd
from google.colab import data_table
data_table.enable_dataframe_formatter()
holiday_movies = pd.read_csv("https://bcdanl.github.io/data/holiday_movies.csv")
holiday_movie_genres = pd.read_csv("https://bcdanl.github.io/data/holiday_movie_genres.csv")holiday_movies| tconst | title_type | primary_title | simple_title | year | runtime_minutes | average_rating | num_votes | |
|---|---|---|---|---|---|---|---|---|
| 0 | tt0020356 | movie | Sailor's Holiday | sailors holiday | 1929 | 58.0 | 5.4 | 55 |
| 1 | tt0020823 | movie | The Devil's Holiday | the devils holiday | 1930 | 80.0 | 6.0 | 242 |
| 2 | tt0020985 | movie | Holiday | holiday | 1930 | 91.0 | 6.3 | 638 |
| 3 | tt0021268 | movie | Holiday of St. Jorgen | holiday of st jorgen | 1930 | 83.0 | 7.4 | 256 |
| 4 | tt0021377 | movie | Sin Takes a Holiday | sin takes a holiday | 1930 | 81.0 | 6.1 | 740 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 2260 | tt9747440 | tvMovie | A Christmas Love Story | a christmas love story | 2019 | 84.0 | 6.9 | 1652 |
| 2261 | tt9747450 | tvMovie | Holiday for Heroes | holiday for heroes | 2019 | 81.0 | 7.0 | 1655 |
| 2262 | tt9802890 | tvMovie | Christmas Jars | christmas jars | 2019 | 93.0 | 7.3 | 914 |
| 2263 | tt9815084 | tvMovie | A Very British Christmas | a very british christmas | 2019 | 90.0 | 5.7 | 725 |
| 2264 | tt9892854 | tvMovie | #Xmas | xmas | 2022 | 84.0 | 5.8 | 926 |
2265 rows × 8 columns
holiday_movie_genres| tconst | genres | |
|---|---|---|
| 0 | tt0020356 | Comedy |
| 1 | tt0020823 | Drama |
| 2 | tt0020823 | Romance |
| 3 | tt0020985 | Comedy |
| 4 | tt0020985 | Drama |
| ... | ... | ... |
| 4526 | tt9815084 | Family |
| 4527 | tt9815084 | Romance |
| 4528 | tt9892854 | Comedy |
| 4529 | tt9892854 | Drama |
| 4530 | tt9892854 | Romance |
4531 rows × 2 columns
Creating Combined DataFrame
df = pd.concat([holiday_movie_genres, holiday_movies], axis = 'columns', ignore_index = False)
df = df.reset_index()
df| index | tconst | genres | tconst | title_type | primary_title | simple_title | year | runtime_minutes | average_rating | num_votes | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 0 | tt0020356 | Comedy | tt0020356 | movie | Sailor's Holiday | sailors holiday | 1929.0 | 58.0 | 5.4 | 55.0 |
| 1 | 1 | tt0020823 | Drama | tt0020823 | movie | The Devil's Holiday | the devils holiday | 1930.0 | 80.0 | 6.0 | 242.0 |
| 2 | 2 | tt0020823 | Romance | tt0020985 | movie | Holiday | holiday | 1930.0 | 91.0 | 6.3 | 638.0 |
| 3 | 3 | tt0020985 | Comedy | tt0021268 | movie | Holiday of St. Jorgen | holiday of st jorgen | 1930.0 | 83.0 | 7.4 | 256.0 |
| 4 | 4 | tt0020985 | Drama | tt0021377 | movie | Sin Takes a Holiday | sin takes a holiday | 1930.0 | 81.0 | 6.1 | 740.0 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 4526 | 4526 | tt9815084 | Family | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
| 4527 | 4527 | tt9815084 | Romance | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
| 4528 | 4528 | tt9892854 | Comedy | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
| 4529 | 4529 | tt9892854 | Drama | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
| 4530 | 4530 | tt9892854 | Romance | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
4531 rows × 11 columns
Genre Analysis
- Top genres in this DataFrame
df_genres = df[['genres']].value_counts()
df_genres = df_genres.reset_index()
df_genres = df_genres.sort_values(by = ['count'], ascending = False)
df_genres| genres | count | |
|---|---|---|
| 0 | Comedy | 1025 |
| 1 | Drama | 828 |
| 2 | Romance | 737 |
| 3 | Family | 707 |
| 4 | Animation | 268 |
| 5 | Fantasy | 185 |
| 6 | Adventure | 117 |
| 7 | Documentary | 101 |
| 8 | Short | 96 |
| 9 | Music | 91 |
| 10 | Musical | 78 |
| 11 | Horror | 63 |
| 12 | Crime | 44 |
| 13 | Mystery | 37 |
| 14 | Thriller | 32 |
| 15 | Action | 31 |
| 16 | Sci-Fi | 14 |
| 17 | History | 13 |
| 18 | War | 9 |
| 19 | Biography | 6 |
| 20 | Western | 6 |
| 21 | Sport | 5 |
| 22 | Film-Noir | 2 |
| 23 | Talk-Show | 2 |
| 24 | Reality-TV | 1 |
| 25 | News | 1 |
Top rated movies within the most popular genre (Comedy)
df[df["genres"] == "Comedy"].sort_values(by="average_rating", ascending=False).head(5)| index | tconst | genres | tconst | title_type | primary_title | simple_title | year | runtime_minutes | average_rating | num_votes | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1204 | 1204 | tt0902454 | Comedy | tt1569470 | video | NLO Spirit of Christmas | nlo spirit of christmas | 2009.0 | 70.0 | 10.0 | 18.0 |
| 1433 | 1433 | tt10804410 | Comedy | tt21411946 | movie | Bringing Back Christmas | bringing back christmas | 2023.0 | NaN | 9.9 | 20.0 |
| 1522 | 1522 | tt11090204 | Comedy | tt2273141 | video | Christmas Bone Us | christmas bone us | 2012.0 | 6.0 | 9.8 | 10.0 |
| 1601 | 1601 | tt1141984 | Comedy | tt25147828 | movie | Cheap vs. Expensive Xmas Day | cheap vs expensive xmas day | 2022.0 | 107.0 | 9.5 | 14.0 |
| 2239 | 2239 | tt1489248 | Comedy | tt9351618 | tvMovie | Let's Go Luna!: Luna's Christmas Around the World | lets go luna lunas christmas around the world | 2018.0 | 47.0 | 9.2 | 18.0 |
Rating Analysis
top rated movies
df.sort_values(by = ['average_rating'], ascending = False).head(5)| index | tconst | genres | tconst | title_type | primary_title | simple_title | year | runtime_minutes | average_rating | num_votes | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1204 | 1204 | tt0902454 | Comedy | tt1569470 | video | NLO Spirit of Christmas | nlo spirit of christmas | 2009.0 | 70.0 | 10.0 | 18.0 |
| 1433 | 1433 | tt10804410 | Comedy | tt21411946 | movie | Bringing Back Christmas | bringing back christmas | 2023.0 | NaN | 9.9 | 20.0 |
| 1522 | 1522 | tt11090204 | Comedy | tt2273141 | video | Christmas Bone Us | christmas bone us | 2012.0 | 6.0 | 9.8 | 10.0 |
| 1601 | 1601 | tt1141984 | Comedy | tt25147828 | movie | Cheap vs. Expensive Xmas Day | cheap vs expensive xmas day | 2022.0 | 107.0 | 9.5 | 14.0 |
| 519 | 519 | tt0220525 | Documentary | tt0487263 | tvMovie | Marie Osmond's Merry Christmas | marie osmonds merry christmas | 1986.0 | NaN | 9.4 | 23.0 |
| 564 | 564 | tt0242135 | Family | tt0824748 | tvMovie | Christmas and the Civil War | christmas and the civil war | 2006.0 | NaN | 9.3 | 16.0 |
| 1416 | 1416 | tt10768328 | Drama | tt21308838 | video | Aunty Donna: Always Room for Christmas Pud | aunty donna always room for christmas pud | 2018.0 | 4.0 | 9.3 | 24.0 |
| 2241 | 2241 | tt1489248 | Family | tt9361052 | video | D'Astrain No Cinema - Christmas Special | dastrain no cinema christmas special | 2018.0 | 5.0 | 9.3 | 81.0 |
| 548 | 548 | tt0233828 | Documentary | tt0766251 | tvMovie | Tom's Christmas Tree | toms christmas tree | 2006.0 | 26.0 | 9.2 | 34.0 |
| 1645 | 1645 | tt11585200 | Romance | tt28015185 | movie | Christmas Ringer | christmas ringer | 2023.0 | NaN | 9.2 | 21.0 |
bottom rated movies
df.sort_values(by = ['average_rating'], ascending = True).head(5)| index | tconst | genres | tconst | title_type | primary_title | simple_title | year | runtime_minutes | average_rating | num_votes | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 2179 | 2179 | tt14577152 | Comedy | tt8941352 | video | A Grinch Christmas Carol | a grinch christmas carol | 2012.0 | 2.0 | 1.0 | 41.0 |
| 1797 | 1797 | tt1284976 | Romance | tt4009460 | movie | Kirk Cameron's Saving Christmas | kirk camerons saving christmas | 2014.0 | 79.0 | 1.3 | 16608.0 |
| 1272 | 1272 | tt10149756 | Drama | tt1651146 | tvMovie | The Christmas Tree | the christmas tree | 1991.0 | 43.0 | 1.4 | 854.0 |
| 854 | 854 | tt0370767 | NaN | tt1242748 | video | Johnson Family Christmas Dinner | johnson family christmas dinner | 2008.0 | 88.0 | 1.5 | 127.0 |
| 927 | 927 | tt0405615 | Family | tt13180242 | tvMovie | A Christmas Call | a christmas call | 2020.0 | NaN | 1.5 | 11.0 |
| 1610 | 1610 | tt11455096 | Documentary | tt2578608 | movie | Krampus: The Christmas Devil | krampus the christmas devil | 2013.0 | 82.0 | 1.6 | 1963.0 |
| 2174 | 2174 | tt1451381 | Animation | tt8879926 | movie | A Raunchy Christmas Story | a raunchy christmas story | 2018.0 | 72.0 | 1.7 | 132.0 |
| 2100 | 2100 | tt13878640 | Comedy | tt7784186 | video | The Christmas Light | the christmas light | 1995.0 | 23.0 | 1.7 | 126.0 |
| 2258 | 2258 | tt15012044 | Romance | tt9683542 | movie | A Karate Christmas Miracle | a karate christmas miracle | 2019.0 | 90.0 | 1.8 | 177.0 |
| 2121 | 2121 | tt14065740 | Comedy | tt8096860 | movie | A Feminist Christmas Carol | a feminist christmas carol | 2017.0 | NaN | 1.8 | 14.0 |
runtime analysis
Shortest movies
df.sort_values(by = ['runtime_minutes'], ascending = True).head(5)| index | tconst | genres | tconst | title_type | primary_title | simple_title | year | runtime_minutes | average_rating | num_votes | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 2177 | 2177 | tt14558558 | Drama | tt8894218 | video | 1982 Burger King Christmas Commercial with Lea... | 1982 burger king christmas commercial with lea... | 1983.0 | 1.0 | 6.7 | 67.0 |
| 812 | 812 | tt0344269 | Short | tt11649070 | video | Last Christmas: Emilia Sings | last christmas emilia sings | 2019.0 | 1.0 | 8.9 | 20.0 |
| 847 | 847 | tt0366691 | Family | tt12298120 | video | Buffy the Vampire Slayer: 1-800 Collect 'A Buf... | buffy the vampire slayer 1800 collect a buffy ... | 1998.0 | 1.0 | 7.9 | 17.0 |
| 1064 | 1064 | tt0487263 | Music | tt14084160 | video | Capitol One: Christmas Ad | capitol one christmas ad | 2020.0 | 1.0 | 6.8 | 146.0 |
| 2092 | 2092 | tt13795858 | Short | tt7743592 | video | BBC One Christmas 2017: The Supporting Act | bbc one christmas 2017 the supporting act | 2017.0 | 2.0 | 6.7 | 10.0 |
| 2244 | 2244 | tt1492952 | Comedy | tt9410240 | video | Emmet's Holiday Party: A Lego Movie Short | emmets holiday party a lego movie short | 2018.0 | 2.0 | 6.0 | 224.0 |
| 1941 | 1941 | tt13341414 | Comedy | tt6077642 | video | Lego Star Wars: Christmas Special | lego star wars christmas special | 2008.0 | 2.0 | 6.8 | 10.0 |
| 2179 | 2179 | tt14577152 | Comedy | tt8941352 | video | A Grinch Christmas Carol | a grinch christmas carol | 2012.0 | 2.0 | 1.0 | 41.0 |
| 1929 | 1929 | tt1332026 | Comedy | tt5882474 | video | Punitive psychiatry: Antichristmas | punitive psychiatry antichristmas | 2015.0 | 2.0 | 8.9 | 26.0 |
| 1594 | 1594 | tt1139113 | Animation | tt24816758 | video | A Holiday Party Starring Alexandra Daddario | a holiday party starring alexandra daddario | 2021.0 | 2.0 | 4.9 | 24.0 |
longest movies
df.sort_values(by = ['runtime_minutes'], ascending = False).head(5)| index | tconst | genres | tconst | title_type | primary_title | simple_title | year | runtime_minutes | average_rating | num_votes | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 2076 | 2076 | tt13708060 | Musical | tt7683858 | video | Thomas & Friends: Thomas' Holiday Collection | thomas friends thomas holiday collection | 2017.0 | 288.0 | 4.3 | 30.0 |
| 1731 | 1731 | tt12389030 | Comedy | tt3138040 | video | Scooby-Doo: 13 Spooky Tales - Holiday Chills a... | scoobydoo 13 spooky tales holiday chills and ... | 2012.0 | 286.0 | 7.6 | 95.0 |
| 636 | 636 | tt0269988 | Musical | tt10220226 | video | That '70s Show: Holiday Edition | that 70s show holiday edition | 2011.0 | 220.0 | 8.4 | 130.0 |
| 2255 | 2255 | tt15010346 | Romance | tt9636340 | video | A Frozen Christmas Carol | a frozen christmas carol | 2018.0 | 213.0 | 5.7 | 20.0 |
| 1556 | 1556 | tt11241514 | Romance | tt2361175 | tvMovie | Britain's Favourite Christmas Songs | britains favourite christmas songs | 2011.0 | 180.0 | 5.4 | 20.0 |
| 2251 | 2251 | tt1499623 | Animation | tt9485074 | tvMovie | When Christmas Goes Horribly Wrong | when christmas goes horribly wrong | 2018.0 | 172.0 | 5.4 | 10.0 |
| 1390 | 1390 | tt10667026 | Family | tt2078672 | tvMovie | Love's Christmas Journey | loves christmas journey | 2011.0 | 172.0 | 6.4 | 809.0 |
| 1761 | 1761 | tt12766346 | Romance | tt3438088 | tvMovie | Greatest Ever Christmas Movies | greatest ever christmas movies | 2013.0 | 165.0 | 5.8 | 21.0 |
| 1604 | 1604 | tt11421878 | Music | tt2556308 | movie | Holiday | holiday | 2014.0 | 160.0 | 7.2 | 29676.0 |
| 240 | 240 | tt0088106 | Romance | tt0196565 | movie | Mediterranean Holiday | mediterranean holiday | 1962.0 | 158.0 | 7.5 | 87.0 |
Year Analysis
average rating after 2005
avgnew = df[df['year'] >= 2005]
avgnew['average_rating'].mean()np.float64(5.965655339805825)
avgold = df[df['year'] <= 2005]
avgold['average_rating'].mean()np.float64(6.335518292682926)
print (“Hello Josh”)