Xmas Movie Analysis

Series, DataFrame, Rows, Columns, Filtering

Published

April 9, 2025

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

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”)