Skip to content

HaneenAyman23/data-analytics-course-Project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Data Analytics Can Catch Serial Killers

A diagnostic-analytics case study on behavioral and demographic patterns in U.S. serial homicide, built for a university Data Analytics course. The project takes a small, manually-compiled dataset of serial-killer incidents and asks: what patterns connect victim selection, method, and the killer's documented mental health profile — and could those patterns help investigators connect cases earlier?

University group project (Data Analytics course) — built by Haneen Ayman with Zoubida Torjani. Inspired by real-world behavioral analysis work like the FBI's Behavioral Analysis Unit and the use of geographic/behavioral linkage in cases such as the Golden State Killer (Joseph James DeAngelo).

A note on the topic and the data

This is a small (51-incident, 21-offender), manually compiled dataset built from public sources (Wikipedia victim tables, Hickey's Serial Murderers and Their Victims, FBI BAU case material) for an academic exercise in diagnostic analytics. It is not a clinical or epidemiological sample, and it says nothing about people with these diagnoses in general — the overwhelming majority of people with ASPD, NPD, Borderline PD, psychosis, or any other disorder referenced here are never violent. The patterns below describe this specific, extreme, non-representative group of convicted offenders, not mental illness as a category. Treat the findings as a classroom exercise in pattern-finding, not as a clinical claim about risk.

Problem Statement

What patterns exist in serial homicide across the United States — specifically in victim age, killing method, relationship to victim, and the killer's primary mental health profile — and do those patterns vary meaningfully by state? We used diagnostic analytics ("why did this happen, and what would let us recognize it earlier?") rather than predictive or prescriptive analytics, since the goal was to explain existing patterns, not forecast new crimes.

Dataset

Rows 51 victim-level incidents
Offenders 21 distinct serial killers
Time span 1928 – 2009
Geography 12 U.S. states
Type Structured, row-per-victim
Source Manually compiled — external/public records (Wikipedia, Hickey 2016, FBI BAU)
Columns Killer, KillerAge, VictimAge, VictimGender, Method, Year, Relationship, State, MentalIllness

No single existing public dataset combined victim demographics, method, relationship, geography, and documented mental health profile in one place, so this dataset was built by hand for the project.

Data Cleaning

The raw file (data/raw/Data_Analytics_raw.csv) had a few quality issues, fixed in src/clean_data.py:

Issue Before After
Synonym labels for the same diagnosis "ASPD" and "Antisocial PD" recorded as two different disorders Merged into one canonical label, "ASPD"
Inconsistent whitespace "Stranger " and "Stranger" read as two different categories Stripped to a single "Stranger" category
Typos "Stragulation", "Sexual Assualt" "Strangulation", "Sexual Assault"
Multi-valued cell One MentalIllness cell held a comma-separated list Split into a Disorders list column + one binary (0/1) indicator column per disorder, for co-occurrence analysis

No missing values or duplicate rows were found. One intentional exception: "Paranoid Schizophrenia" and "Paranoid Schizophrenia (contested)" were kept separate, since the "(contested)" tag records a real historical dispute over David Berkowitz's diagnosis — merging it would erase a meaningful distinction rather than fix an error.

Exploratory Data Analysis

Victim age (years), this dataset:

Mean Median Mode Std. Dev. Min Max
26.1 25 19 10.3 8 52
  • 65% of victims in this dataset were female.
  • Strangulation was the most common method (≈41% of incidents), followed by handgun and stabbing.
  • ASPD was by far the most frequently recorded disorder, followed by Psychopathy, Paraphilia, and NPD.

Visualizations

All charts are regenerated from the cleaned dataset by src/visualize.py and saved to outputs/.

Disorder frequency Co-occurrence heatmap
Victim age by disorder Victim gender by disorder
Method proportions Relationship by disorder
Killer age by disorder Incidents by state

Analytics Type

Diagnostic analytics. The project explains why observed patterns in victim age, method, and relationship exist by correlating them with the killer's primary recorded disorder — it does not forecast future offenses (predictive) or recommend interventions (prescriptive), though both are discussed below as natural next steps.

Key Insights

  • Stranger victims are most associated with handgun or strangulation methods; acquaintance victims more often with stabbing or extended-contact methods (e.g. torture).
  • ASPD is the most frequent primary disorder in the dataset and co-occurs heavily with Psychopathy and NPD — consistent with how these traits cluster clinically, within this offender sample.
  • Female victims in this sample are, on average, younger than male victims.
  • Relationship to victim is a stronger differentiator of method than any single disorder label is.

Future Scope

  • Predictive: model victim profile or method from killer age and disorder history (would need a much larger, less manually-curated dataset).
  • Prescriptive: simulate monitoring/intervention strategies for at-risk released offenders.
  • Time-series: track escalation patterns over an offender's active period.
  • Geospatial: map incident density against case-clearance data to study how location affects detection speed.

Tools

Python (pandas, NumPy, Matplotlib, seaborn), Excel (for early data entry).

Repository Structure

.
├── data/
│   ├── raw/Data_Analytics_raw.csv      # original, untouched
│   └── Data_Analytics_clean.csv        # cleaned dataset used for analysis
├── src/
│   ├── clean_data.py                   # reproducible cleaning step
│   └── visualize.py                    # EDA + chart generation
├── outputs/                            # generated charts + summary stats
├── docs/
│   └── presentation.pptx               # the in-class presentation deliverable
└── README.md

Running It

pip install -r requirements.txt
python src/clean_data.py     # raw -> data/Data_Analytics_clean.csv
python src/visualize.py      # clean data -> outputs/*.png

Credits

Group project for a university Data Analytics course. Built by Haneen Ayman and Zoubida Torjani.

About

Diagnostic analytics on U.S. serial homicide patterns (victim age, method, relationship, mental health profile) — university Data Analytics course project. Python (pandas/seaborn) data cleaning + EDA on a hand-compiled 51-incident dataset, with full before/after cleaning documentation.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages