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.
-
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
- Python 3.8 or higher
- pip package manager
- Clone the repository:
git clone <repository-url>
cd weather-data-visualizer- Install required dependencies:
pip install -r requirements.txt- Generate sample data (optional):
python generate_sample_data.pypython main.py <input_csv> [options]python main.py data/weather_data.csv -p timeseriespython main.py data/weather_data.csv -p allpython main.py data/weather_data.csv -p timeseries --start-date 2023-06-01 --end-date 2023-08-31python main.py data/weather_data.csv -p comparison --regions North Southpython main.py data/weather_data.csv -p all -f pdfpython main.py data/weather_data.csv -p heatmap -o my_charts/python main.py data/weather_data.csv -p timeseries --summary| 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 |
- timeseries: Time-series plots showing metrics over time with rolling averages
- heatmap: Calendar heatmaps showing day-by-day variation
- bar: Bar charts comparing average metrics by region
- comparison: Line plots comparing regions side-by-side
- distribution: Histograms showing value distributions
- all: Generate all available plot types
Your CSV file should have the following columns:
date: Date in YYYY-MM-DD formattemperature: Temperature value (numeric)humidity: Humidity value (numeric)rainfall: Rainfall amount (numeric)
region: Region name (string) - Required for regional comparisons
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
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
python main.py data/weather_data.csv \
-p timeseries heatmap \
--start-date 2023-06-01 \
--end-date 2023-08-31 \
--summarypython main.py data/weather_data.csv \
-p comparison bar \
--regions North South East West \
-f pdfpython main.py data/weather_data.csv \
-p all \
--regions Central \
-o central_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/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')The project includes a sample data generator that creates realistic weather datasets:
python generate_sample_data.pyThis generates:
data/weather_data.csv: Full dataset with 5 regions and 365 daysdata/simple_weather_data.csv: Simple dataset without regions
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 figExtend the WeatherDataProcessor class in src/data_processor.py to add custom filtering or analysis methods.
- Handles datasets with 100,000+ records efficiently
- Optimized for plotting large time series
- Memory-efficient data processing with pandas
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
- Large Datasets: For very large datasets, use date filtering to focus on specific periods
- Multiple Regions: Use comparison plots to identify regional patterns
- Export Quality: PDF format is recommended for presentations and reports
- Batch Processing: Use the
allplot type to generate all visualizations at once
Solution: Install dependencies with pip install -r requirements.txt
Solution: Ensure your CSV has date, temperature, humidity, and rainfall columns
Solution: Check your date range and region names match the data
Solution: Plots are saved to the output directory, not displayed interactively
This project is provided as-is for educational and portfolio purposes.
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
Built with Python, pandas, and matplotlib for offline weather data analysis and visualization.