Downloads World Bank population data (Prodigy-InfoTech Task 1 dataset) and produces two visualizations: a histogram of country population sizes and a bar chart of total population by region.
.
├── requirements.txt
├── visualize_population.py
├── data/ # downloaded CSVs (created at runtime)
└── output/ # generated charts (created at runtime)
pip install -r requirements.txt
python visualize_population.pyThis downloads population.csv and metadata_country.csv into data/, then saves population_histogram.png and population_by_region.png into output/.
- Python 3 — core language
- pandas — reading CSVs, merging population data with country metadata, filtering, grouping, and aggregating by region
- matplotlib — building the histogram and horizontal bar chart, custom axis formatting, and saving figures to disk
- pathlib — cross-platform path handling for data/output directories
- urllib.request — downloading source CSVs directly from GitHub (no external HTTP library needed)
- Data acquisition: fetching remote CSV files and caching them locally so the script doesn't re-download on every run
- Data cleaning: coercing string columns to numeric with
pd.to_numeric(..., errors="coerce"), dropping rows with missing values - Data merging: joining the population table with country metadata on
Country Codeto attach region/income group info - Filtering aggregates: excluding World Bank aggregate rows (e.g. "World", "High income") by requiring a non-empty
Region - Data aggregation:
groupby+sumto compute total population per region - Data visualization:
- Histogram for a continuous distribution (country population sizes)
- Horizontal bar chart for a categorical comparison (population by region), including value labels on each bar
- Custom tick formatting (e.g. displaying axis values as
120M/450K)
- Code organization: separating concerns into
download_data,load_population,plot_population_histogram,plot_population_by_region, andmainfunctions - Reproducibility: pinning minimum library versions in
requirements.txt
World Bank population data via the Prodigy-InfoTech data-science-datasets repository (Task 1).