Data Science

Collect, clean, and analyze data to support decisions in government, NGOs, and business.

Level: Beginner–Advanced Beginner: 2 months β€’ Intermediate: 3 months β€’ Advanced: 6 months Contact for pricing

Prerequisites

No prior experience required β€” open to beginners.

Certificate

Awarded by Rescue Academy on successful completion of the program's assessments and final project.

Learn Online β€” Live Classes

Register, receive your schedule, and join live instructor-led Data Science classes on Zoom. Assignments, instructor feedback, and a certificate on completion.

Learn In Person

Attend Data Science classes in person in Juba with hands-on labs, instructor mentorship, and a certificate on completion.

What You'll Learn

  • Data Science Lifecycle β€” from collection to deployment
  • Exploratory Data Analysis (EDA) with Pandas & visualizations
  • Statistical inference, correlation & data mining techniques
  • Data visualization & storytelling with Matplotlib & Seaborn
  • Data privacy, anonymization & ethical handling of PII

Curriculum

Beginner

Full lessons available below

Module 1: The Data Science Lifecycle

Learning objectives

  • Understand the end-to-end data science process

Lessons

  • From Question to Insight
  • The Data Science Lifecycle Stages

Module 2: Exploratory Data Analysis (EDA)

Learning objectives

  • Explore and understand a dataset

Lessons

  • Using describe() and info()
  • Spotting Patterns & Outliers

Module 3: Statistical Inference & Data Mining

Learning objectives

  • Apply basic statistical reasoning to data

Lessons

  • Descriptive vs Inferential Statistics
  • Basic Data Mining Concepts

Module 4: Data Visualization & Storytelling

Learning objectives

  • Communicate data findings clearly

Lessons

  • Choosing the Right Chart
  • Telling a Story with Data

Module 5: Data Privacy & Security in Analytics

Learning objectives

  • Handle data responsibly

Lessons

  • Anonymizing Sensitive Data
  • Data Privacy Best Practices

Intermediate

Outline β€” full lessons coming soon

Module 1: Data Cleaning in Practice

Learning objectives

  • Clean messy real-world data

Lessons

  • Handling Missing & Duplicate Data
  • Data Type & Format Issues

Module 2: Working with Pandas & NumPy

Learning objectives

  • Manipulate data efficiently in Python

Lessons

  • Pandas DataFrames in Depth
  • NumPy for Numerical Work

Module 3: Intro to Predictive Analytics

Learning objectives

  • Apply basic predictive techniques to data

Lessons

  • Simple Predictive Models
  • Interpreting Predictions

Module 4: Reporting & Dashboards

Learning objectives

  • Present data science findings professionally

Lessons

  • Building a Data Report
  • Intro to Dashboarding Tools

Module 5: Intermediate Project

Learning objectives

  • Complete an end-to-end analysis on a real dataset

Lessons

  • Planning a Data Project
  • Analyze & Present Findings

Advanced

Outline β€” full lessons coming soon

Module 1: Advanced Statistical Methods

Learning objectives

  • Apply more advanced statistical techniques

Lessons

  • Hypothesis Testing
  • Correlation vs Causation

Module 2: Machine Learning for Data Science

Learning objectives

  • Apply ML as part of a data science workflow

Lessons

  • When to Bring in ML
  • Model Selection for a Data Problem

Module 3: Big Data Concepts

Learning objectives

  • Understand working with larger-scale data

Lessons

  • Big Data Concepts (Conceptual)
  • Scaling Beyond a Single Machine

Module 4: Data Ethics & Governance

Learning objectives

  • Apply data ethics at an organizational level

Lessons

  • Data Governance Basics
  • Ethical Data Use in Organizations

Module 5: Capstone Project

Learning objectives

  • Deliver a complete data science project end to end

Lessons

  • Planning the Capstone
  • Analyze, Model & Present

Full Lessons β€” Beginner Level

1. The Data Science Lifecycle

Every data science project follows a standard lifecycle — a repeatable process that turns raw data into real-world insights. Understanding these phases is more important than any single tool, because it gives you a roadmap from question to decision.

  • Data Collection: Gather data from surveys, APIs, CSV files, or databases. In South Sudan, this might mean combining NGO program reports, mobile money logs, or health clinic records.
  • Data Cleaning: Handle missing values, remove duplicates, and fix inconsistencies. Real-world data is always messy — expect to spend 60-80% of your time here.
  • Exploration (EDA): Use summary statistics and visualizations to find patterns, outliers, and relationships. This guides what questions to ask next.
  • Modeling & Analysis: Apply statistical methods or machine learning to answer your question — whether that is forecasting, classification, or identifying trends.
  • Deployment & Reporting: Share findings through dashboards, reports, or interactive tools. Stakeholders need clear, actionable insights — not raw code.

Practical Skill: Use Jupyter Notebooks to document every step of the lifecycle. Each cell becomes a record of your thinking — great for collaboration and reproducibility. Export final results to Tableau Public for interactive dashboards.

Try it Yourself — Data Pipeline Simulation

Python (Pandas simulation)

# Simulating the Data Science Lifecycle with a dictionary pipeline
          # You would normally load a real CSV with pd.read_csv()

          # Step 1 & 2: Collect & Clean
          raw_data = [
              {"name": "Clinic A", "patients": 340, "staff": 5, "region": "Central"},
              {"name": "Clinic B", "patients": 510, "staff": 8, "region": "Central"},
              {"name": "Clinic C", "patients": None, "staff": 3, "region": "Equatoria"},  # missing value!
              {"name": "Clinic D", "patients": 180, "staff": 2, "region": "Equatoria"},
              {"name": "Clinic E", "patients": 620, "staff": 10, "region": "Central"},
              {"name": "Clinic F", "patients": 280, "staff": None, "region": "Upper Nile"},  # missing value!
          ]

          # Remove rows with missing data (simple cleaning)
          clean_data = [r for r in raw_data if r["patients"] and r["staff"]]
          print(f"Loaded {len(raw_data)} records, cleaned to {len(clean_data)}")

          # Step 3: Explore — calculate summary stats
          total_patients = sum(r["patients"] for r in clean_data)
          avg_patients = total_patients / len(clean_data)
          print(f"Total patients across clinics: {total_patients}")
          print(f"Average patients per clinic: {avg_patients:.0f}")

          # Step 4 & 5: Insight & Report
          print("\nInsight: Central region clinics see more patients on average.")
          print("Recommendation: Allocate more staff to Equatoria clinics to improve coverage.")

2. Exploratory Data Analysis (EDA)

EDA is the process of getting to know your dataset before building any models. You use descriptive statistics and summary functions to uncover patterns, anomalies, and distributions. EDA answers questions like: "Are there outliers?" "Which columns are most correlated?" "Is the data balanced across groups?"

  • df.describe() — summary statistics (count, mean, min, max, quartiles) for numeric columns.
  • df.info() — column names, data types, and non-null counts. Essential for spotting missing data.
  • df['column'].value_counts() — frequency distribution of categorical values.
  • Always visualize distributions early — a histogram or boxplot reveals outliers and skew that summary stats alone can hide.

Practical Skill: In Jupyter Notebooks, run EDA commands cell by cell. Use Pandas for tabular summaries and Matplotlib or Seaborn for quick plots. The goal is to form hypotheses, not confirm them.

Try it Yourself — EDA on a Public Health Mock Dataset

Python (Pandas)

# Exploratory Data Analysis with Pandas
          # Install: pip install pandas

          import pandas as pd
          import numpy as np

          # Create a mock public health dataset
          data = {
              "clinic": ["A", "B", "C", "D", "E", "F"],
              "patients": [340, 510, 480, 180, 620, 280],
              "staff": [5, 8, 6, 2, 10, 4],
              "region": ["Central", "Central", "Equatoria", "Equatoria", "Central", "Upper Nile"],
              "vaccination_rate": [0.72, 0.88, 0.65, 0.91, 0.95, 0.54]
          }

          df = pd.DataFrame(data)

          # 1. Structure overview
          print("=== Dataset Info ===")
          print(df.info())

          print("\n=== Summary Statistics ===")
          print(df.describe())

          print("\n=== Per-Region Distribution ===")
          print(df["region"].value_counts())

          print("\n=== Average Patients by Region ===")
          print(df.groupby("region")["patients"].mean().round(0))

          # Key finding
          print("\nInsight: Central region has more staff and higher patient volume.")
          print("Upper Nile has the lowest vaccination rate — may need investigation.")

3. Statistical Inference & Data Mining

Statistical inference means drawing conclusions about a large population from a smaller sample. Data mining is the process of discovering hidden relationships and patterns in large datasets — like finding which factors most strongly predict patient outcomes or identifying clusters of similar schools for resource allocation.

  • Correlation analysis (df.corr()) measures how strongly two numeric variables move together. A value near +1 means they rise together; near -1 means one rises as the other falls; near 0 means no linear relationship.
  • A high correlation does not imply causation — always consider confounding factors.
  • Data mining often uses clustering (unsupervised learning) to group similar records — for example, grouping NGO programs by budget size, reach, and impact score.
  • In Jupyter Notebooks, use heatmaps (Seaborn) to visualize correlation matrices at a glance.

Practical Skill: Before building complex models, compute a correlation matrix to identify which features are redundant (highly correlated) and which are independent predictors. This saves time and improves model performance.

Try it Yourself — Correlation Matrix & Trend Filtering

Python (Pandas & NumPy)

# Finding correlations and significant trends in corporate data
          # Install: pip install pandas numpy

          import pandas as pd
          import numpy as np

          # Simulated corporate data: department performance
          np.random.seed(42)
          data = {
              "training_hours": np.random.randint(10, 80, 8),
              "productivity_score": np.random.uniform(50, 100, 8),
              "employee_satisfaction": np.random.uniform(2, 5, 8),
              "days_absent": np.random.randint(0, 15, 8)
          }
          df = pd.DataFrame(data)

          print("=== Dataset ===")
          print(df.round(1), "\n")

          # Compute correlation matrix
          corr = df.corr()
          print("=== Correlation Matrix ===")
          print(corr.round(3), "\n")

          # Find the strongest correlation (excluding self)
          corr_values = corr.unstack().drop_duplicates()
          strongest = corr_values[corr_values.abs().argsort()[::-1]][:3]
          print("=== Top 3 Strongest Correlations ===")
          for pair, val in strongest.items():
              if val != 1.0:
                  print(f"  {pair[0]} vs {pair[1]}: {val:.3f}")

          # Insight
          print("\nInsight: High training hours may correlate with productivity.")
          print("But check if satisfied employees are also more productive!")

4. Data Visualization & Storytelling

A chart is worth a thousand rows of data. Data storytelling is the art of turning complex numbers into visual narratives that decision-makers can act on immediately. The best visualizations are clear, honest, and focused — they answer a specific question and highlight the key insight.

  • Line charts show trends over time (e.g., monthly malaria cases).
  • Bar charts compare categories (e.g., aid received per region).
  • Scatter plots reveal relationships between two numeric variables (e.g., income vs food security).
  • Use Matplotlib and Seaborn for static charts, Tableau Public for interactive dashboards.

Practical Skill: Always label your axes, use a clear title, and add a caption explaining the insight. A chart without context is just decoration. Build your first dashboard in Tableau Public (free!) or Jupyter Notebooks.

Try it Yourself — Beautiful Bar Chart & Line Chart

Python (Matplotlib)

# Visualizing data with Matplotlib — clean and professional
          # Install: pip install matplotlib pandas

          import matplotlib.pyplot as plt
          import pandas as pd

          # Sample data: monthly clinic visits in South Sudan
          months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun"]
          malaria_cases = [120, 145, 180, 210, 195, 160]
          hygiene_workshops = [5, 8, 12, 15, 13, 10]

          # Create a side-by-side figure
          fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 4))

          # --- Bar Chart: Malaria cases per month ---
          bars = ax1.bar(months, malaria_cases, color="#1D448A", width=0.6)
          ax1.set_title("Malaria Cases by Month", fontsize=13, fontweight="bold")
          ax1.set_xlabel("Month")
          ax1.set_ylabel("Cases")
          ax1.set_ylim(0, 250)
          # Add value labels on top of each bar
          for bar, val in zip(bars, malaria_cases):
              ax1.text(bar.get_x() + bar.get_width()/2, bar.get_height() + 5,
                       str(val), ha="center", fontsize=9, fontweight="bold")

          # --- Line Chart: Hygiene workshops over time ---
          ax2.plot(months, hygiene_workshops, color="#F2C035",
                   marker="o", linewidth=2.5, markersize=8)
          ax2.set_title("Hygiene Workshops (Jan-Jun)", fontsize=13, fontweight="bold")
          ax2.set_xlabel("Month")
          ax2.set_ylabel("Workshops")
          ax2.set_ylim(0, 20)
          # Add data point labels
          for m, v in zip(months, hygiene_workshops):
              ax2.text(m, v + 0.5, str(v), ha="center", fontsize=9, fontweight="bold")

          plt.tight_layout()
          plt.show()

          print("Charts generated! The bar chart shows malaria spikes in Apr-May.")
          print("The line chart shows workshop frequency increasing over time.")
          print("Insight: More workshops correlate with fewer cases? Investigate!")

5. Data Privacy & Security in Analytics

Real-world datasets often contain Personally Identifiable Information (PII) — names, phone numbers, email addresses, or national IDs. Before sharing data or publishing a report, you must anonymize it. This is not just ethical — it may be legally required (e.g., under data protection laws). Always ask: "Could anyone be harmed if this data leaked?"

  • Masking: Replace real names with placeholders (e.g., "Patient_001" instead of "John Deng").
  • Dropping: Remove sensitive columns entirely if they are not needed for analysis.
  • Aggregating: Group data at a higher level (e.g., show city averages instead of individual records).
  • Ethical handling: Never use personal data for purposes people did not consent to. Document your data governance.

Practical Skill: Before publishing any dashboard or sharing a CSV, run a privacy check: drop or mask names, emails, phone numbers, and IDs. Use Pandas to automate this — it takes 2 lines of code.

Try it Yourself — Anonymize a Dataset with Pandas

Python (Pandas)

# Safe data handling: masking and dropping PII
          # Install: pip install pandas

          import pandas as pd

          # Simulate a sensitive dataset
          raw_data = pd.DataFrame({
              "patient_name": ["John Deng", "Grace Nyok", "Amina Bakr", "Peter Malong"],
              "phone": ["+211 912 345 678", "+211 923 456 789", "+211 934 567 890", "+211 945 678 901"],
              "email": ["john.d@email.com", "grace.n@email.com", "amina.b@email.com", "peter.m@email.com"],
              "diagnosis": ["Malaria", "Typhoid", "Malaria", "Diarrhea"],
              "age": [34, 28, 45, 31],
              "days_admitted": [5, 3, 7, 2],
              "region": ["Juba", "Malakal", "Wau", "Juba"]
          })

          print("=== ORIGINAL DATASET (Contains PII) ===")
          print(raw_data, "\n")

          # --- Step 1: Drop columns that are not essential ---
          safe_data = raw_data.drop(columns=["phone", "email"])
          print("--- After dropping phone & email ---")
          print(safe_data, "\n")

          # --- Step 2: Mask patient names ---
          safe_data["patient_name"] = [
              f"Patient_{i:03d}" for i in range(1, len(safe_data) + 1)
          ]
          print("--- After masking patient names ---")
          print(safe_data, "\n")

          # --- Step 3: Optional — aggregate data for reporting (no individuals) ---
          print("--- Aggregated Report (no PII) ---")
          report = safe_data.groupby("region").agg(
              total_patients=("patient_name", "count"),
              avg_age=("age", "mean"),
              avg_stay=("days_admitted", "mean")
          ).round(1)
          print(report)

          print("\nPrivacy preserved! The anonymized dataset is safe to share.")
          print("Reports should use aggregated data to protect individuals.")

Quick Quiz — Data Science Basics

Which phase of the Data Science lifecycle involves using .describe() and .info() to understand your data?
What is the FIRST thing you should do before sharing a dataset that contains patient names and phone numbers?

Quick Tip: You are reading the free online version of this lesson. To get a certificate, attend in-person training and complete all assessments. Practice data science using Jupyter Notebooks (free, browser-based) and explore real-world datasets on Kaggle or data.gov. Start with the Pandas documentation — it is your best friend.

Tools & Technologies

  • Python
  • Jupyter
  • Pandas
  • NumPy
  • Microsoft Excel

Career Opportunities

  • Data/AI analyst role at a bank, telecom, or NGO
  • Research or further-study pathway in AI/ML/Data Science
  • Remote/freelance AI or data work

Practical Projects

  • Complete a full data analysis: clean, explore, visualize, and report insights from a real dataset
  • Build a simple data dashboard summarizing key findings for a non-technical audience

Ready to register for Data Science?

WhatsApp: +211926196668 Email: rescueacademy26@gmail.com