Software: Python

The goal of this project is to construct an innovative easy-to-use dashboard to enable users to interactively explore the top 1,000 movies on IMDb! I aim to demonstrate how interactive visualization can enable users to discover interesting insights from within this data. 

Specific goals:

  • Implement dashboard in Holoviz Panel (Panel supports most visualization libraries including matplotlib, plotly, etc.)

  • Demonstrate a nice variety of different Holoviz Panel widgets

  • Manage access to data via a well-designed API that mediates data passing between the backend data and frontend user interface

The data lists the top 1,000 movies on IMDb, including their individual titles, year released, certificate, runtime, genre, IMDb rating, overview, metascore, director, stars in the cast, number of votes, and gross revenue.

IMDb dataset sample

To do this, I created two files: imdb_api.py and imdb_explorer.py.

imdb_api.py: The primary API for interacting with the IMDb dataset

Within this file, I created an IMDB_API class, which included functions like:

  • load_imdb – Load in dataset as pandas dataframe

  • prepare_data – Convert 'Gross', 'Released_Year', and 'Runtime' data into usable numeric data for analysis

  • filter_data – Filter data by year, genre, and vote selections and return filtered dataset

  • create_plot – Create and return a plot (scatterplot, barplot, or histogram) based on plot_type and parameter widget selections

The imdb_api.py file also had a main() function to test class functions.

imdb_explorer.py: The main application for creating interactive dashboard for IMDb dataset

This file included functions to initialize the Holoviz Panel, declare widgets for the dashboard (search widgets, plotting widgets, table widgets), define callback functions to update the dashboard figures based on user selections, create callback bindings that connect widgets to callback functions, define dashboard widget containers (“cards”), and set up the layout of the final dashboard.

imdb_explorer.py code sample

Sample dashboard outputs

* Dashboard is generated when imdb_explorer.py is executed

This project challenged me to create an interactive dashboard with a focus on usability, functionality, and visual appeal. By leveraging Holoviz Panel, I demonstrated how interactive visualization empowers users to uncover insights from large datasets, showcasing how design and data science intersect to enhance user experiences.

Implementing this dashboard deepened my understanding of interactive visualization tools and backend/frontend integration. I explored a variety of Holoviz Panel widgets, allowing users to filter and explore the data through sliders, multi-select menus, and dynamic plots. Developing a well-structured API to mediate data flow between the backend and the dashboard interface refined my skills in designing scalable and maintainable code. Additionally, a significant aspect of this project involved creating an intuitive and engaging interface. I prioritized ease of use, ensuring users could explore trends in runtime, genre distribution, and IMDb ratings seamlessly. This process reinforced my appreciation for thoughtful UX design in data visualization. Handling large datasets also required careful consideration of computational efficiency. Optimizing data queries and managing state in the API ensured smooth interactions, even with complex visualizations. These challenges taught me how to design systems that balance functionality with performance, a critical skill in building scalable applications.

Overall, this project exemplifies my passion for crafting tools that bridge technical complexity with user accessibility. It highlighted the value of interactivity in data science, transforming static numbers into dynamic stories that users can explore and interpret. From conceptualizing the dashboard's design to implementing the backend API, every step reinforced my understanding of the importance of both technical and user-focused perspectives in creating impactful data products. Moving forward, I aim to continue exploring ways to make data exploration more accessible and engaging, combining my skills in data science and design to empower users with meaningful insights.

Next
Next

Lyricool NLP Framework