A comprehensive data analysis project exploring naming trends across American generations using the Social Security Administration's national baby names dataset.
This project analyzes naming patterns from 1880 to 2019, examining how baby name popularity has evolved across different generations. The analysis reveals fascinating insights into cultural shifts, from the concentration of traditional names in earlier generations to the increasing diversity and individuality in recent decades.
- Demographic Trends: Sharp spike in births during the 1960s "Baby Boom" followed by a gradual decline
- Gender Patterns: Nearly even split between male and female births throughout the period
- Name Concentration: Older generations showed highly concentrated naming patterns (e.g., Mary dominated for girls, John/James for boys)
- Cultural Evolution: Modern generations (Gen Z and Gen Alpha) display significantly more diverse naming choices, reflecting broader cultural shifts toward individuality
Source: Social Security Administration's "Baby Names from Social Security Card Applications — National Data"
Access: Available at catalog.data.gov
Coverage: 1880–2019
Fields: Name, Sex, Year, Count
Note: The dataset represents names recorded on Social Security card applications (not every birth). Very low-frequency names may be excluded for privacy reasons.
- Python 3.8+
- Jupyter Notebook/Lab
- Clone this repository:
git clone https://github.com/yourusername/US-Baby_Names-Exploration.git
cd US-Baby_Names-Exploration- Install required packages:
pip install -r requirements.txt- Download the dataset:
- Visit the data.gov catalog
- Extract the files to the
names/directory
US-Baby_Names-Exploration/
├── US Baby Names Exploration.ipynb # Main analysis notebook
├── names/ # Raw data files (*.txt)
├── data/ # Processed data outputs (ignored in git)
├── requirements.txt # Python dependencies
├── .gitignore # Git ignore rules
└── README.md # Project documentation
- Ensure your dataset files are in the
names/directory - Open the Jupyter notebook:
jupyter notebook "US Baby Names Exploration.ipynb"- Run all cells to reproduce the analysis
The notebook includes three main visualization types:
- Line Plot: Total births per year by sex, showing demographic trends over time
- Pie Charts: Top 5 male and female names across all years
- Faceted Bar Charts: Top 5 names per generation, color-coded to show dominance patterns
- Greatest Generation: ≤1945
- Baby Boomers: 1946–1964
- Generation X: 1965–1980
- Millennials: 1981–1996
- Generation Z: 1997–2012
- Generation Alpha: 2013+
- Python: Data processing and analysis
- Pandas: Data manipulation and aggregation
- NumPy: Numerical computations
- Matplotlib: Data visualization
- Jupyter: Interactive development environment
The analysis pipeline includes:
- Data Loading: Aggregating yearly text files into a unified DataFrame
- Data Cleaning: Handling missing values, standardizing formats, type conversions
- Feature Engineering: Calculating frequencies, ranks, and generational groupings
- Visualization: Creating publication-ready charts with Matplotlib
Note: Portions of the dataset transformation code were developed with AI assistance. All transformations and results were reviewed and validated by the author.
Contributions are welcome! Please feel free to submit a Pull Request.
This project is open source and available under the MIT License.
Lana Geissinger
- Social Security Administration for providing the dataset
- U.S. Data.gov portal for data accessibility
- Research inspired by "From Karen to Katie: Using Baby Names to Understand Cultural Evolution" (Psychological Science, 2012)
- Social Security Administration. "Baby Names from Social Security Card Applications — National Data." catalog.data.gov
- Matplotlib Documentation: matplotlib.org
- Generation definitions: Wikipedia - Generation