saayam-for-all/data

Beginner Employee Onboarding Task: Local Setup + Saayam Practice Data Validation & Analysis

开放

#264 创建于 2026年8月10日

 (3 条评论) (0 个反应) (0 位负责人)Jupyter Notebook (30 个派生)auto 404
good first issue

仓库指标

星标
 (1 个星标)
PR 合并指标
 (PR 指标待抓取)

描述

Description

Welcome to the Saayam Data Engineering & Analytics team!

Before starting work on real Saayam tasks, please complete this beginner-friendly onboarding exercise. The goal is to make sure your local development environment is ready and to give you hands-on practice with a small synthetic dataset similar to the type of data you may work with in Saayam.

This task has three parts:

  1. Verify your local Python and data environment.
  2. Explore and validate a synthetic Saayam practice dataset.
  3. Perform a few basic analytics calculations and create a visualization.

Important

  1. This is a local-only onboarding exercise.
  2. Do NOT use production, development, or real Saayam user data.
  3. Do NOT connect to AWS RDS, Lambda, or any Saayam production resources.
  4. Do NOT commit or push your notebook, scripts, credentials, or output files unless specifically requested.
  5. The provided dataset is synthetic and contains no real beneficiary, volunteer, contributor, or organization information.
  6. Never place passwords, database credentials, API keys, or AWS credentials directly inside Python files or notebooks.
  7. Once this task is completed successfully, you may begin working on assigned Saayam issues.

Part 1: Local Environment Check

Create a Python file named:

check_env.py

The script should:

  • Print the installed Python version.

  • Print the installed versions of:

    • pandas
    • numpy
    • matplotlib
    • scikit-learn
    • psycopg2, if installed
  • Check whether Jupyter Notebook/JupyterLab is available.

  • Check whether PyTorch is installed.

  • If PyTorch is installed, print whether GPU/CUDA is available.

  • Handle missing libraries without crashing.

If required packages are missing, install them using:

pip install pandas numpy matplotlib scikit-learn psycopg2-binary jupyter

Expected Output Example

Python version: 3.12.2
pandas version: 2.2.2
numpy version: 1.26.4
matplotlib version: 3.9.0
scikit-learn version: 1.5.1
psycopg2 version: 2.9.9
Jupyter available: True
PyTorch installed: True
GPU available: False

Exact version numbers may be different.


Part 2: Explore the Saayam Practice Dataset

Use the provided synthetic file:

saayam_employee_practice.csv(attached here)

The dataset can contain columns similar to:

record_id
contributor_name
team
task_type
hours_worked
task_status
created_date
completed_date

Example teams may include:

  • Data Engineering
  • Data Analytics
  • AI/ML
  • Frontend
  • Backend
  • QA

Example task statuses may include:

  • CREATED
  • IN_PROGRESS
  • COMPLETED
  • BLOCKED

Open a new Jupyter Notebook and complete the following tasks.

1. Load the Dataset

Load the CSV file using pandas.

2. Preview the Data

Display:

  • First 5 rows
  • Number of rows
  • Number of columns
  • Column names
  • Data types

3. Perform Basic Data Quality Checks

Check for:

  • Missing values
  • Duplicate rows
  • Duplicate record_id values
  • Negative or zero hours_worked
  • Unexpected task statuses

Print a small summary of your findings.

Example:

Total records: 50
Missing values: 2
Duplicate records: 1
Invalid hours records: 0
Unexpected statuses: 0

Do not immediately delete or modify bad records. First identify and report them.


Part 3: Basic Saayam Analytics

Using pandas, calculate the following.

1. Contributor Count

Find the number of unique contributors.

Example:

Total contributors: 18

2. Total Hours Worked

Calculate the total number of hours worked.

Example:

Total hours worked: 326

3. Hours by Team

Group the dataset by team and calculate total hours worked by each team.

Example:

Data Engineering    82
Data Analytics      74
AI/ML               68
Frontend            44
Backend             39
QA                  19

4. Team With the Highest Workload

Identify the team with the highest total hours.

Example:

Team with most hours: Data Engineering - 82 hours

5. Top Contributors

Sort contributors by their total hours worked and display the top 5.

Example:

Top Contributors:

1. Priya Kapoor - 38 hours
2. Rohan Singh - 34 hours
3. Maria Lopez - 31 hours
4. John Smith - 29 hours
5. Aisha Khan - 27 hours

6. Task Status Distribution

Count how many tasks are in each status.

Example:

COMPLETED: 24
IN_PROGRESS: 12
CREATED: 9
BLOCKED: 5

7. Completion Rate

Calculate:

Completion Rate =
Completed Tasks / Total Tasks × 100

Example:

Task completion rate: 48.0%

8. Average Hours per Task

Calculate the average hours worked per task.

Example:

Average hours per task: 6.52 hours

Part 4: Create Basic Visualizations

Create the following charts using matplotlib.

Chart 1: Total Hours by Team

Create a bar chart showing:

  • X-axis: Team
  • Y-axis: Total Hours Worked
  • Title: Total Hours Worked by Team

Chart 2: Task Status Distribution

Create a bar chart showing the number of tasks in each task status.

Title:

Task Status Distribution

Make sure the charts have:

  • Clear title
  • Axis labels
  • Readable labels
  • Appropriate figure size

Part 5: Write a Short Analysis

At the bottom of the notebook, write 3–5 observations about the dataset.

For example:

Observations:

1. Data Engineering recorded the highest number of working hours.
2. Approximately 48% of tasks have been completed.
3. A small number of records contain missing values and should be reviewed before analysis.
4. The top five contributors account for a significant portion of the overall recorded hours.
5. Blocked tasks should be reviewed to determine whether there are recurring workflow issues.

Your observations should be based on your actual results.


Bonus Task — Optional

If you are comfortable with Python, create a reusable function:

def get_team_summary(df):

The function should return a summary containing:

  • Total contributors
  • Total tasks
  • Total hours
  • Average hours per task
  • Completed tasks
  • Completion rate
  • Team with the most hours

Example output:

{
    "total_contributors": 18,
    "total_tasks": 50,
    "total_hours": 326,
    "average_hours_per_task": 6.52,
    "completed_tasks": 24,
    "completion_rate": 48.0,
    "highest_workload_team": "Data Engineering"
}

This is similar to how backend analytics functions may eventually prepare summarized data for dashboards or APIs.


Acceptance Criteria

The onboarding task is complete when:

  • check_env.py runs successfully locally.
  • Python and required libraries are available.
  • The dataset loads successfully in Jupyter Notebook.
  • First 5 rows and dataset information are displayed.
  • Contributor count is calculated.
  • Total hours are calculated.
  • Data quality checks are completed.
  • Hours are grouped by team.
  • The highest-workload team is identified.
  • Top 5 contributors are displayed.
  • Task status distribution is calculated.
  • Completion rate is calculated.
  • Average hours per task is calculated.
  • At least two visualizations are created.
  • 3–5 observations are documented.
  • No real Saayam data is used.
  • No credentials are included in the code.
  • No connection is made to production or AWS resources.

Deliverables

For this onboarding exercise, keep the following files locally:

employee_onboarding/
│
├── check_env.py
├── saayam_employee_practice.csv
└── saayam_employee_practice.ipynb

Unless your team lead specifically requests otherwise, these files should not be pushed to the Saayam repository.


Next Steps

After completing this onboarding task:

  1. Inform your team lead that the local environment setup is complete.
  2. Confirm that the practice dataset analysis runs successfully.
  3. Review the Saayam repository structure and contribution guidelines.
  4. Pull the latest main branch.
  5. Create a separate branch for your assigned issue.
  6. Begin working on your first real Saayam task.

Welcome to the Saayam team!

saayam_employee_practice.csv

贡献者指南