STEP 1: Obtaining the data
IMDb contains data on all movies, films, tv shows etc. As a formal repository, the IMDb makes data available through downloadable .tsv files. Two files were downloaded, one containing movie titles/years, (movies.basics) and the other containing ratings (movies.ratings).
Rotten Tomatoes is a consumer-facing review aggregator holding data on popular movie releases. It does not offer external files. BeautifulSoup was used to scrape the data directly from their 2025 list of movies at https://editorial.rottentomatoes.com/guide/best-2025-movies-every-certified-fresh/ .
STEP 2: Merging and Cleaning Data
The two IMDb files were joined on the common key tconst and filtered on startYear and titleType to return only movies released in 2025. Additional columns were also removed. The resulting dataframe contained 20776 rows and two columns, ‘primaryTitle‘ and ‘averageRating‘. 10681 rows had no rating, and were removed, leaving 10095 rows. No duplicates were found in this reduced dataframe.
Similarly, the RottenTomatoes file was filtered on Year for 2025 releases, and additional columns removed. The resulting dataframe contained 144 rows and two columns, ‘Title‘ and ‘Score‘. One missing rating was found and removed. No duplicates were found.
Having obtained simple, clean data, the two files were joined with a left join with the rotten tomatoes file as the left, main table. 132 rows matched successfully.
The Rotten Tomatoes ratings were changed from a string to a float, the spare column from joining the tables was removed, and the ratings columns renamed. The final dataframe contained 132 rows, and the columns ‘Title’, ‘IMDb’ and ‘Rotten’.
STEP 3: Statistical Analysis and Visualisation
Although Pearson’s PMCC was calculated (0.4998), ratings are often better represented through rankings. The scipy-stats library was used to conduct Spearman’s Rank Correlation on the two ratings, and a value of rho = 0.5123 obtained. While this sounds weak on the normal 0 – 1 scale, scipy-stats simple significance test showed the correlation is statistically significant. Personally though, I would suggest the data is not truly supporting consistency in critic ratings between the two websites! As a final step, a scattergraph with an appropriate line of best fit was drawn to represent this data.
To view the Jupyter notebook file – please click here.
Fig 1: IMDb vs Rotten Tomatoes ratings — rho = 0.51


