Skip to content

Harshith073/weather-data-visualizer

Repository files navigation

Weather Data Visualizer

An offline data visualization tool that works with pre-downloaded weather datasets (CSV format). This project processes temperature, humidity, and rainfall data over time, generating insightful visualizations like heatmaps, time-series graphs, and bar charts. Perfect for practicing data wrangling, visualization, and analytics skills.

Features

  • Multiple Visualization Types

    • Time-series plots with rolling averages
    • Heatmaps showing seasonal patterns
    • Bar charts for regional comparisons
    • Distribution histograms
    • Multi-region comparison plots
  • Flexible Data Filtering

    • Filter by date range
    • Filter by region(s)
    • Combine multiple filters
  • Export Capabilities

    • Export charts as PNG (high resolution)
    • Export charts as PDF
    • Batch export all visualizations
  • Data Analysis

    • Summary statistics
    • Region-specific analysis
    • Temporal trend analysis

Installation

Prerequisites

  • Python 3.8 or higher
  • pip package manager

Setup

  1. Clone the repository:
git clone <repository-url>
cd weather-data-visualizer
  1. Install required dependencies:
pip install -r requirements.txt
  1. Generate sample data (optional):
python generate_sample_data.py

Usage

Basic Command Structure

python main.py <input_csv> [options]

Quick Start Examples

1. Create a Time Series Plot

python main.py data/weather_data.csv -p timeseries

2. Generate All Visualizations

python main.py data/weather_data.csv -p all

3. Filter by Date Range

python main.py data/weather_data.csv -p timeseries --start-date 2023-06-01 --end-date 2023-08-31

4. Filter by Region

python main.py data/weather_data.csv -p comparison --regions North South

5. Export as PDF

python main.py data/weather_data.csv -p all -f pdf

6. Custom Output Directory

python main.py data/weather_data.csv -p heatmap -o my_charts/

7. Display Summary Statistics

python main.py data/weather_data.csv -p timeseries --summary

Command-Line Options

Option Description Example
input Path to CSV file (required) data/weather_data.csv
-p, --plot-type Type of plot to generate timeseries, heatmap, bar, comparison, distribution, all
--start-date Start date for filtering 2023-01-01
--end-date End date for filtering 2023-12-31
--regions Filter by region(s) North South East
-o, --output Output directory output/
-f, --format Output format png, pdf
--summary Display summary statistics Flag

Plot Types

  1. timeseries: Time-series plots showing metrics over time with rolling averages
  2. heatmap: Calendar heatmaps showing day-by-day variation
  3. bar: Bar charts comparing average metrics by region
  4. comparison: Line plots comparing regions side-by-side
  5. distribution: Histograms showing value distributions
  6. all: Generate all available plot types

CSV Data Format

Your CSV file should have the following columns:

Required Columns

  • date: Date in YYYY-MM-DD format
  • temperature: Temperature value (numeric)
  • humidity: Humidity value (numeric)
  • rainfall: Rainfall amount (numeric)

Optional Columns

  • region: Region name (string) - Required for regional comparisons

Example CSV Structure

date,region,temperature,humidity,rainfall
2023-01-01,North,15.5,65.2,0.0
2023-01-01,South,25.3,72.1,5.2
2023-01-02,North,16.2,63.8,2.1
2023-01-02,South,24.8,70.5,0.0

Project Structure

weather-data-visualizer/
├── src/
│   ├── data_processor.py    # Data loading and filtering
│   ├── visualizer.py         # Visualization creation
│   └── cli.py                # Command-line interface
├── data/
│   ├── weather_data.csv      # Sample dataset with regions
│   └── simple_weather_data.csv  # Simple dataset
├── output/                   # Generated visualizations
├── examples/                 # Example usage scripts
├── main.py                   # Main entry point
├── generate_sample_data.py   # Sample data generator
├── requirements.txt          # Python dependencies
└── README.md                 # This file

Examples

Example 1: Analyzing Summer Weather Patterns

python main.py data/weather_data.csv \
  -p timeseries heatmap \
  --start-date 2023-06-01 \
  --end-date 2023-08-31 \
  --summary

Example 2: Comparing Regional Differences

python main.py data/weather_data.csv \
  -p comparison bar \
  --regions North South East West \
  -f pdf

Example 3: Full Analysis for a Specific Region

python main.py data/weather_data.csv \
  -p all \
  --regions Central \
  -o central_analysis/

Example 4: Year-over-Year Analysis

# First half of the year
python main.py data/weather_data.csv \
  -p timeseries \
  --start-date 2023-01-01 \
  --end-date 2023-06-30 \
  -o output/h1/

# Second half of the year
python main.py data/weather_data.csv \
  -p timeseries \
  --start-date 2023-07-01 \
  --end-date 2023-12-31 \
  -o output/h2/

Programmatic Usage

You can also use the modules directly in your Python scripts:

from src.data_processor import WeatherDataProcessor
from src.visualizer import WeatherVisualizer

# Load and process data
processor = WeatherDataProcessor('data/weather_data.csv')
filtered_data = processor.filter_data(
    start_date='2023-01-01',
    end_date='2023-12-31',
    regions=['North', 'South']
)

# Create visualizations
visualizer = WeatherVisualizer()
fig = visualizer.create_time_series(filtered_data)
visualizer.save_figure(fig, 'output/my_plot.png')

Sample Data

The project includes a sample data generator that creates realistic weather datasets:

python generate_sample_data.py

This generates:

  • data/weather_data.csv: Full dataset with 5 regions and 365 days
  • data/simple_weather_data.csv: Simple dataset without regions

Customization

Adding New Visualizations

To add new plot types, extend the WeatherVisualizer class in src/visualizer.py:

def create_custom_plot(self, data, **kwargs):
    fig, ax = plt.subplots(figsize=(12, 6))
    # Your plotting logic here
    return fig

Custom Data Processing

Extend the WeatherDataProcessor class in src/data_processor.py to add custom filtering or analysis methods.

Performance

  • Handles datasets with 100,000+ records efficiently
  • Optimized for plotting large time series
  • Memory-efficient data processing with pandas

Use Cases

This project is ideal for:

  • Portfolio Projects: Showcase data visualization and analytics skills
  • Learning: Practice pandas, matplotlib, and data wrangling
  • Weather Analysis: Analyze local weather patterns and trends
  • Data Science Education: Teaching tool for visualization concepts
  • Climate Research: Quick analysis of weather datasets

Tips

  1. Large Datasets: For very large datasets, use date filtering to focus on specific periods
  2. Multiple Regions: Use comparison plots to identify regional patterns
  3. Export Quality: PDF format is recommended for presentations and reports
  4. Batch Processing: Use the all plot type to generate all visualizations at once

Troubleshooting

Issue: "No module named 'pandas'"

Solution: Install dependencies with pip install -r requirements.txt

Issue: "Missing required columns"

Solution: Ensure your CSV has date, temperature, humidity, and rainfall columns

Issue: "No data matches the specified filters"

Solution: Check your date range and region names match the data

Issue: Plots not showing

Solution: Plots are saved to the output directory, not displayed interactively

License

This project is provided as-is for educational and portfolio purposes.

Contributing

Feel free to fork this project and adapt it to your needs. Suggestions for improvements:

  • Add more visualization types
  • Support for additional weather metrics
  • Interactive web interface
  • Real-time data streaming support

Author

Built with Python, pandas, and matplotlib for offline weather data analysis and visualization.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published