Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🌳 London Borough of Camden — Urban Forest Data Quality & Exploratory Analysis

Python Version Pandas Jupyter Status

An end-to-end data auditing, exploratory analysis (EDA), and data integration project evaluating the municipal tree asset inventory for the London Borough of Camden Council to support environmental reporting and public tree initiatives.


📌 Project Overview & Objectives

Camden Council manages thousands of urban trees across parks, highways, and public estates. This project audits heterogeneous data sources (spreadsheets, SQL dumps, web-scraped taxonomies) to assess data health, resolve structural anomalies, and prepare datasets for public brochures and carbon/pollution impact reports.

  • Multi-Format Ingestion: Merged Excel (.xlsx), CSV (.csv), and JSON (.json) datasets into unified Pandas data structures.
  • Variable Classification: Audited qualitative (nominal/ordinal) and quantitative (discrete/continuous) variables across 23,000+ asset records.
  • Data Quality Auditing: Systematic detection and isolation of missing values, duplicate asset identifiers, physical dimension outliers, and coordinate boundary breaches.

🔍 Key Findings & Quality Audit

Audit Dimension Methodology Key Findings & Actionable Insights
Missing Data & Nulls .isnull(), .isin([0]) Identified missing environmental metrics (carbon storage, sequestration) and zero-value measurements requiring data imputation.
Physical Outliers Interquartile range & Boxplots Isolated extreme typographical errors in tree dimensions (e.g., recorded tree heights of 96m and 127m).
Duplicate Identifiers Asset key frequency check Detected 6 duplicated tree asset IDs across highways maintenance records.
Geolocation Anomalies Easting / Northing scatter plots Identified 8 tree assets located outside the Camden administrative boundary (Northing > 194,000).
Relational Integrity Cross-dataset boolean masking Flagged 23 trees missing environmental records and 76 scientific names lacking common-name mappings.

🛠️ Tech Stack & Methodology

  • Language: Python 3
  • Libraries: pandas, matplotlib, seaborn
  • Techniques: Data profiling, statistical summaries (describe()), outlier detection, boolean indexing masks, geospatial coordinate plotting, data integration & schema alignment.

📂 Repository Structure

  • /data: Raw datasets (camden_trees.xlsx, camden_trees_environmental.csv, tree_common_names.json).
  • /notebooks: Main executable Jupyter Notebook (trees_in_camden_analysis.ipynb) containing all analytical steps.
  • /docs: Data governance documentation, data source register, and executive slide deck.

🚀 How to Run Locally

# 1. Clone the repository
git clone [https://github.com/rfilipeuk/camden-trees-data-quality.git](https://github.com/rfilipeuk/camden-trees-data-quality.git)

# 2. Navigate to project root
cd camden-trees-data-quality

# 3. Launch Jupyter Notebook
jupyter notebook notebooks/trees_in_camden_analysis.ipynb

About

Exploratory Data Analysis (EDA) and data quality auditing on 23k+ urban tree assets for Camden Council using Python and Pandas.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages