A full end-to-end data analytics pipeline on a real agricultural survey database from Maji Ndogo — a diverse farming region seeking to automate crop production through data-driven decisions. This project demonstrates production-quality data engineering: ingesting relational data via SQL, cleaning it with Pandas...
# 🌾 Maji Ndogo Agricultural Data Analysis
**Author:** Oluwatobi Victoria Babalola | MSc Data Science
**Portfolio:** bbt-portfolio.vercel.app | **LinkedIn:** oluwatobi-babalola-victoria
---
## 📌 Project Summary
A full end-to-end data analytics pipeline on a real agricultural survey database from Maji Ndogo — a diverse farming region seeking to automate crop production through data-driven decisions.
This project demonstrates production-quality data engineering: ingesting relational data via SQL, cleaning it with Pandas, building reusable analytical functions, and surfacing actionable agricultural insights.
---
## 🎯 Objectives
- Ingest and join multi-table agricultural survey data from an SQLite database using SQL
- Clean and validate the dataset (fix column swaps, spelling errors, invalid values)
- Analyse crop distribution, soil fertility, and climate-geography relationships
- Identify top-performing crops and their ideal growing conditions
- Build reusable, well-documented Python functions and an OOP data pipeline class
---
## 🗃️ Dataset
The `Maji_Ndogo_farm_survey_small.db` SQLite database contains **four tables**, all joined on `Field_ID`:
| Table | Key Features |
|-------|--------------|
| `geographic_features` | Elevation, Latitude, Longitude, Location, Slope |
| `weather_features` | Rainfall, Min/Max/Ave Temperature |
| `soil_and_crop_features` | Soil fertility, Soil type, pH |
| `farm_management_features` | Pollution level, Plot size, Crop type, Annual yield, Standard yield |
**Crop types covered:** cassava, tea, wheat, potato, banana, coffee, rice, maize
---
## 🛠️ Tools & Technologies
| Tool | Purpose |
|------|---------|
| Python 3.10 | Core language |
| Pandas | Data manipulation & analysis |
| SQLAlchemy | Database engine & SQL execution |
| SQLite | Source database |
| Matplotlib / Seaborn | Visualisation |
| Logging | Runtime diagnostics |
| OOP (Classes) | Reusable `FieldDataProcessor` pipeline |
---
## 📁 Repository Structure
```
maji …