Name data for people born in the US, Spain, Argentina, Chile and Italy — collected from five national sources, cleaned, and normalized into one consistent format.
On Kaggle: https://www.kaggle.com/datasets/rosinascampino/name-datasets-us-spain-argentina-chile-italy
Every country publishes this data its own way. Some offer clean CSV downloads, some publish Excel workbooks, and some only render HTML tables on a government site. Column names, encodings, date ranges and structures don't agree with each other, and none of them were designed to be combined.
I started this as a way to learn data cleaning in Python, and most of the work turned out to be exactly that mismatch: deciding on one target schema and writing a separate path to it from each source.
raw_data/ untouched files as downloaded or scraped
scripts/ collection and cleaning
cleaned_data/ normalized output
sources.txt where each dataset came from
Keeping raw inputs separate from transformed outputs means the whole thing can
be re-run and checked. If a cleaned file looks wrong, the original is still
there to compare against, and sources.txt says where it came from.
- Reading and writing CSV with Python's
csvmodule - Web scraping with Beautiful Soup
- Working with Excel files via
openpyxl - Creating and instantiating data classes
- Type hints