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.