The Short Version

The most ambitious EDA in my portfolio. This notebook analyzes the full TMDb 5,000 movie dataset across every dimension that matters to three audiences simultaneously: viewers looking for what to watch, producers trying to maximize profit, and data enthusiasts who just want to understand how the film industry works. Eleven feature categories. Seven performance metrics. A purpose-built library of reusable visualization functions. And a narrative framing device — three named character personas — that makes the findings readable rather than just comprehensive.

Problem

What separates a blockbuster from a flop? Is it the genre, the cast, the director, the budget level, the release timing, or the production country? And depending on whether you care about profit, popularity, or critical rating, do those answers change? This project sets out to answer all of those questions from a single dataset — exhaustively.

Approach

Data Engineering — The raw TMDb data arrives as two CSVs (movies + credits) that were merged on id. The most demanding part was parsing the heavily nested JSON-like string columns (genres, keywords, cast, crew, production_companies, production_countries). Two custom parsers were built:

A profit column was engineered (revenue - budget), and release_date was decomposed into year, season, month, day-of-month, and day-name for temporal analysis. Movies with zero budget, near-zero revenue, fewer than 10 votes, or outside the 60–250 minute runtime range were filtered as noise.

Visualization infrastructure — Rather than writing one-off charts, a full reusable function library was built:

Narrative structure — Each finding is voiced by one of three named personas: Viona (the viewer), Richard (the producer), and Nuna (the curious reader). This separates analytical observations by their practical relevance and keeps a 200+ chart notebook readable.

Coverage — Every feature was profiled against every key metric (budget, revenue, profit, popularity, vote average, vote count, runtime):

Genres · Keywords · Original Language · Original Title · Overview · Tagline · Production Companies · Production Countries · Cast · Directors · Release Year · Season · Month · Day of Month · Day of Week

Result

Selected findings across the three audience perspectives:

For producers (Richard):

For viewers (Viona):

For the curious (Nuna):

What I Learned

Building the full function library before starting the analysis — especially RepetitionDF, most_by, and super_percentages — was the single highest-leverage decision in the project. Without it, analyzing cast, keywords, genres, and directors (all list-valued columns) against seven different metrics would have required hundreds of one-off loops. With it, each new question was a one-liner. The sunburst charts for genre × keyword × profit were the most practically useful output: they compress what would be a lookup table spanning thousands of combinations into a navigable visual that a producer or viewer can actually use. The three-persona narrative structure also proved worth the upfront design cost — it forces every finding to be connected to a real use case rather than just reported.