A comprehensive data analysis project for CS699 (Software Lab) under Prof. Bhaskaran Raman, focusing on airline passenger data visualization and insights.
This project analyzes airline passenger data to provide insights into travel patterns, demographics, and operational efficiency. The system includes a Python-based backend for data processing and visualization generation, coupled with a web-based frontend dashboard for interactive data exploration.
- Comprehensive Data Analysis: Analysis of 98,619 passenger records with automated pipeline
- Rich Visualizations: 21 graphs and charts with meaningful descriptive names
- Demographic Insights: Gender, age, nationality, and geographic distribution analysis
- Flight Performance Metrics: On-time, delayed, and cancelled flight statistics
- Web Dashboard: User-friendly interface with 23 pages (21 graphs + index + additional pages)
- Multi-continent Analysis: Dedicated bar & pie charts for 6 continents (Asia, Europe, North America, South America, Africa, Oceania)
- Progress Tracking: Real-time feedback during script execution with 5-phase progress system
- YAML Configuration: Centralized config.yaml for easy customization of paths and parameters
- Export Capabilities: High-resolution PNG images (300 DPI) compiled in PDF format
- Python 3.10+
- NumPy (β₯1.21.0) - Numerical computing
- Pandas (β₯1.3.0) - Data manipulation and analysis
- Matplotlib (β₯3.4.0) - Static plotting
- Seaborn (β₯0.11.0) - Statistical data visualization
- Plotly (β₯5.0.0) - Interactive visualizations
- Kaleido (β₯0.2.1) - Static image export for Plotly
- PyYAML (β₯6.0) - Configuration file parsing
- TQDM (β₯4.64.0) - Progress bars for script execution
- HTML5 - Structure and content
- CSS3 - Styling and responsive design
- JavaScript - Interactive elements
Airline_Record_Analysis/
βββ README.md # Project documentation
βββ requirements.txt # Python dependencies
βββ .gitignore # Git ignore rules
βββ config.yaml # Configuration file for paths and settings
βββ venv/ # Python virtual environment
βββ backend/
β βββ main.py # Main data analysis script (319 lines)
β βββ data/
β β βββ Airline_Dataset.csv # Raw dataset (98,621 records)
β βββ graphs/ # Generated visualization images (21 graphs)
β βββ gender_distribution_pie.png # Gender distribution
β βββ top_countries_passengers_bar.png # Top countries by passengers
β βββ continent_country_sunburst.png # Continent hierarchy
β βββ age_distribution_histogram.png # Age histogram
β βββ age_count_distribution_bar.png # Age count distribution
β βββ nationality_distribution_pie.png # Nationality analysis
β βββ flight_status_distribution_pie.png # Flight status overview
β βββ flight_status_trends_line.png # Flight trends over time
β βββ average_age_trends_line.png # Age trends over time
β βββ asia_passengers_bar.png # Asia passenger bar chart
β βββ asia_passengers_pie.png # Asia passenger pie chart
β βββ europe_passengers_bar.png # Europe passenger bar chart
β βββ europe_passengers_pie.png # Europe passenger pie chart
β βββ north_america_passengers_bar.png # North America bar chart
β βββ north_america_passengers_pie.png # North America pie chart
β βββ oceania_passengers_bar.png # Oceania passenger bar chart
β βββ oceania_passengers_pie.png # Oceania passenger pie chart
β βββ africa_passengers_bar.png # Africa passenger bar chart
β βββ africa_passengers_pie.png # Africa passenger pie chart
β βββ south_america_passengers_bar.png # South America bar chart
β βββ south_america_passengers_pie.png # South America pie chart
βββ frontend/
βββ index.html # Main dashboard page
βββ style.css # Dashboard styling
βββ img/ # Generated graph visualizations (copied from backend/graphs)
β βββ gender_distribution_pie.png # Gender distribution
β βββ top_countries_passengers_bar.png # Top countries
β βββ continent_country_sunburst.png # Continent hierarchy
β βββ age_distribution_histogram.png # Age histogram
β βββ age_count_distribution_bar.png # Age count
β βββ nationality_distribution_pie.png # Nationality
β βββ flight_status_distribution_pie.png # Flight status
β βββ flight_status_trends_line.png # Flight trends
β βββ average_age_trends_line.png # Age trends
β βββ (Regional bar & pie charts for 6 continents)
βββ static/ # Static assets for UI
β βββ dataset_img.png # Dataset preview icon
β βββ pdf_img.png # PDF report icon
βββ pages/ # Individual graph pages (23 HTML files)
β βββ Graph1.html through Graph23.html
β βββ Each page displays a specific visualization
βββ reports/ # Project deliverables
βββ Airline_Dataset.csv # Dataset copy
βββ generated-graphs.pdf # Compiled visualizations
βββ project-proposal.pdf # Project proposal document
βββ project-update.pdf # Project update document
βββ 23m0761_23m0773.tar.xz # Compressed project archive
The project generates 21 comprehensive visualizations with meaningful, descriptive filenames including:
-
Demographic Analysis
- Gender distribution of passengers (pie chart)
- Age distribution histogram and trends
- Nationality breakdown
-
Geographic Analysis
- Top 10 countries by passenger volume (bar chart)
- Continent-wise passenger distribution (sunburst chart)
- Regional travel patterns across 6 continents
-
Flight Operations
- Flight status analysis (On-time, Delayed, Cancelled)
- Temporal trends in flight performance
- Departure date patterns
-
Regional Deep-dives
- Asia: Passenger analysis with bar and pie charts
- Europe: Travel patterns visualization
- North America: Market insights
- South America: Passenger distribution
- Africa: Regional breakdown
- Oceania: Travel statistics
-
Advanced Analytics
- Quadrant analysis for multi-dimensional insights
- Age trends with minimum threshold filtering
- Hierarchical data representation
- Python 3.10+
- All required packages with versions listed in
requirements.txt
The project uses a config.yaml file to manage all file paths and analysis settings. This centralized configuration makes it easy to modify input/output locations and analysis parameters without changing the code.
Important: All paths in config.yaml are relative to the project root directory. Always run the scripts from the project root:
Airline_Record_Analysis$ python3 backend/main.pyKey Configuration Sections:
- Input Configuration: Dataset path and date parsing settings
- Output Configuration: Directory for generated graphs and individual graph filenames
- Figure Settings: DPI and figure sizes for visualizations
- Analysis Settings: Parameters like top N countries, nationalities, and age bins
To modify paths or settings, edit the config.yaml file in the project root:
input:
dataset_path: "backend/data/Airline_Dataset.csv"
parse_dates: ["Departure Date"]
output:
graphs_dir: "backend/graphs"
graphs:
gender_distribution: "gender_distribution_pie.png"
top_countries: "top_countries_passengers_bar.png"
continent_country_sunburst: "continent_country_sunburst.png"
age_distribution: "age_distribution_histogram.png"
age_count_distribution: "age_count_distribution_bar.png"
# ... (21 total graph definitions with meaningful names)
figure_settings:
dpi: 300
large_figure_size: [14, 8]
xlarge_figure_size: [18, 10]
analysis:
top_n_countries: 10
top_n_nationalities: 20
age_bins: 20-
Clone the repository:
git clone https://github.com/rohitsingh25/Airline_Record_Analysis.git cd Airline_Record_Analysis -
Create and activate virtual environment:
# Create virtual environment python3 -m venv venv # Activate virtual environment # On Linux/Mac: source venv/bin/activate # On Windows: # venv\Scripts\activate
-
Install dependencies:
pip install -r requirements.txt
-
Run the backend analysis (from project root):
python3 backend/main.py
This will:
- Load configuration from
config.yaml - Read the dataset from
backend/data/Airline_Dataset.csv(98,619 records) - Display 5-phase progress with status updates:
- Phase 1: Configuration & Data Loading
- Phase 2: Data Preprocessing & Validation
- Phase 3: Demographic Analysis (3 visualizations)
- Phase 4: Flight Operations Analysis (3 visualizations)
- Phase 5: Regional Analysis (12 visualizations)
- Generate all 21 visualizations with meaningful names
- Save graphs to
backend/graphs/directory as high-resolution PNG files (300 DPI) - Copy all graphs to
frontend/img/directory for dashboard display
- Load configuration from
-
View the dashboard:
- Open
frontend/index.htmlin your web browser directly, or - From project root, run:
# On Linux/Mac: xdg-open frontend/index.html # On Mac: open frontend/index.html # On Windows: start frontend/index.html
- Navigate through 23 different pages including index and 21 visualization graphs
- Each graph page displays one of the 21 generated visualizations with meaningful names
- Explore continent-specific analyses (6 continents with bar & pie charts each)
- View demographic insights, flight operations, and regional patterns
- Access project reports and dataset from the
frontend/reports/directory
- Open
-
Deactivate virtual environment (when done):
deactivate
The airline dataset (Airline_Dataset.csv) contains:
- 98,621 passenger records
- Passenger demographics: ID, Name, Gender, Age, Nationality
- Flight details: Departure/Arrival airports, dates, pilot information
- Geographic data: Country codes, continents, airport locations
- Operational data: Flight status (On Time, Delayed, Cancelled)
Available in two locations:
backend/data/Airline_Dataset.csv- Source data for analysisfrontend/reports/Airline_Dataset.csv- Reference copy for reporting
The frontend/reports/ directory contains:
- generated-graphs.pdf - Compilation of all 21 visualizations
- project-proposal.pdf - Initial project proposal document
- project-update.pdf - Project progress update
- 23m0761_23m0773.tar.xz - Complete project archive
- Analysis covers 98,619 passengers from 6 continents with diverse demographics
- 21 high-resolution visualizations (300 DPI) covering demographic, geographic, and operational aspects
- Meaningful graph naming convention improves navigation and understanding
- Flight performance metrics reveal operational efficiency patterns across time periods
- Temporal analysis shows trends in passenger age and flight status
- Geographic distribution highlights major travel corridors and regional patterns
- Continent-specific insights: 2 visualizations (bar & pie) for each of 6 continents
- Clean web dashboard with organized pages, responsive design, and intuitive navigation
- Centralized YAML configuration enables easy customization of analysis parameters
For questions or collaboration opportunities, please reach out through our LinkedIn profiles or create an issue in this repository.
This project is part of academic coursework for CS699 (Software Lab) and is intended for educational purposes..
CS699 Software Lab Project | IIT Bombay