An in-depth exploratory data analysis of Netflix's content catalog, investigating trends in movie durations, genre distributions, and content characteristics over time.
This project analyzes Netflix's content catalog to uncover insights about:
- Movie duration trends over the past decades
- Genre distributions and their impact on content length
- Content characteristics across different categories
- Platform evolution and content strategy
Are movies getting shorter over time?
Through data analysis and visualization, we explore this hypothesis and discover the factors influencing average movie durations on Netflix.
- Average movie duration shows a declining trend from 103 minutes (2011) to 90 minutes (2020)
- The trend becomes more pronounced in recent years
- However, the decline isn't uniform across all genres
The analysis reveals that shorter content is primarily driven by specific genres:
| Genre | Typical Duration | Impact |
|---|---|---|
| Children | 20-45 minutes | High concentration of short content |
| Documentaries | 30-90 minutes | Variable, often shorter than features |
| Stand-Up | 45-75 minutes | Typically under 90 minutes |
| Feature Films | 90-150 minutes | Traditional movie lengths |
- Netflix hosts a wide variety of content types beyond traditional feature films
- Short-form content (< 60 minutes) represents a significant portion of the catalog
- Platform strategy includes children's programming, documentaries, and stand-up specials
Movies aren't necessarily getting shorter - the apparent trend is largely explained by:
- Increased diversity in content types
- Growing catalog of non-feature content
- Platform expansion into children's programming and documentaries
Libraries Used:
pandas- Data manipulation and analysisnumpy- Numerical computingmatplotlib- Static visualizationsseaborn- Statistical data visualizationplotly- Interactive charts and graphs
- Python 3.11 or higher
- pip package manager
-
Clone the repository
git clone https://github.com/utsavpaudel/Netflix-EDA.git cd Netflix-EDA -
Create a virtual environment (recommended)
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies
pip install -r requirements.txt
-
Launch Jupyter Notebook
jupyter notebook
-
Open the analysis notebook Navigate to
notebooks/netflix_analysis.ipynbin the Jupyter interface
Netflix-EDA/
โโโ data/ # Dataset directory
โ โโโ netflix_data.csv # Main Netflix catalog data
โ โโโ color_data.csv # Color mapping data
โ โโโ README.md # Data documentation
โโโ notebooks/ # Jupyter notebooks
โ โโโ netflix_analysis.ipynb # Main analysis notebook
โโโ outputs/ # Generated outputs
โ โโโ figures/ # Saved visualizations
โโโ workspace/ # Original workspace (legacy)
โโโ requirements.txt # Python dependencies
โโโ .gitignore # Git ignore rules
โโโ LICENSE # MIT License
โโโ README.md # This file
-
Start Jupyter Notebook
jupyter notebook
-
Open the notebook Navigate to
notebooks/netflix_analysis.ipynb -
Run all cells
- Use
Cell > Run Allto execute the complete analysis - Or run cells individually to explore step by step
- Use
import pandas as pd
# Load the Netflix data
netflix_df = pd.read_csv('data/netflix_data.csv')
# View basic statistics
print(netflix_df.describe())
# Check data types
print(netflix_df.info())
# Explore unique values
print(netflix_df['type'].value_counts())
print(netflix_df['genre'].value_counts())The notebook includes various visualizations:
- Line plots for temporal trends
- Scatter plots for duration analysis
- Color-coded visualizations to distinguish genres
- Distribution plots for statistical insights
- Import Netflix catalog data
- Inspect data structure and quality
- Check for missing values
- Filter for movies vs. TV shows
- Select relevant columns
- Handle missing or inconsistent data
- Calculate summary statistics
- Identify trends in movie durations
- Analyze genre distributions
- Create temporal trend visualizations
- Build scatter plots with genre coloring
- Generate comparative charts
- Interpret findings
- Answer the research question
- Identify areas for future analysis
The scatter plot of movie durations over time reveals:
- Black dots: Feature films (90-150 minutes)
- Red dots: Children's content (typically < 60 minutes)
- Blue dots: Documentaries (wide range)
- Green dots: Stand-up specials (45-75 minutes)
Short movies (< 60 minutes) are predominantly:
- Children's programming
- Documentary shorts
- Stand-up comedy specials
- Special features
This explains why the overall average duration appears to decline - it's a composition effect rather than traditional movies becoming shorter.
- Add analysis of TV show trends and season counts
- Explore content additions by country and region
- Analyze director and cast data for patterns
- Create interactive dashboards with Plotly/Dash
- Include sentiment analysis of content descriptions
- Compare Netflix data with other streaming platforms
- Time series forecasting for content trends
- Network analysis of cast and director collaborations
Contributions are welcome! Here's how you can help:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingAnalysis) - Commit your changes (
git commit -m 'Add new analysis') - Push to the branch (
git push origin feature/AmazingAnalysis) - Open a Pull Request
- Additional visualizations
- Statistical tests and modeling
- New data sources integration
- Interactive dashboard development
- Documentation improvements
This project demonstrates key data analysis skills:
- Data manipulation with pandas
- Data visualization with matplotlib
- Exploratory analysis techniques
- Statistical thinking and hypothesis testing
- Jupyter notebook best practices
Perfect for:
- Data science portfolio projects
- Learning Python data analysis
- Practicing visualization techniques
- Understanding real-world datasets
This project is licensed under the MIT License - see the LICENSE file for details.
Utsav Paudel
- GitHub: @utsavpaudel
- Email: utsavpaudel111@gmail.com
- LinkedIn: utsavpaudel
- Netflix data sourced from publicly available datasets
- Inspired by DataCamp's data analysis projects
- Built with the Python data science ecosystem
For questions, suggestions, or collaboration opportunities, feel free to reach out!
โญ If you find this analysis interesting, please consider starring the repository!