মূল content-এ যাও

Python for AI/Project: Student Performance Analysis/Lesson 54

Project: Setup ও Dataset

তোমার প্রথম data analysis project — প্রশ্ন ঠিক করা, ৪০৮ জন student-এর dataset load করা, প্রথম পরিচয়, আর data-র সমস্যাগুলো খুঁজে একটা quality report বানানো।

সময়
25 মিনিট
Exercise
1
Challenge
1
Quiz
3 প্রশ্ন

প্রজেক্টের পরিচয়

এতদিন যা শিখেছো — Python, NumPy, Pandas, Matplotlib — সব একসাথে কাজে লাগানোর সময়। তিনটা lesson জুড়ে একটা সম্পূর্ণ data analysis project:

lesson 1:  প্রশ্ন ঠিক করা → data load → প্রথম পরিচয় → সমস্যা খোঁজা      (আজ)
lesson 2:  data cleaning — নিয়ম ঠিক করে পরিষ্কার dataset
lesson 3:  analysis → visualization → সিদ্ধান্ত → portfolio-তে রাখা

শেষে তোমার কাছে থাকবে একটা project যা GitHub-এ রেখে, CV-তে লিখে দেখানো যায়।

Dataset

একটা শিক্ষা বিষয়ক NGO বাংলাদেশের ৮টা বিভাগের ৪০০ জন SSC পরীক্ষার্থীর তথ্য সংগ্রহ করেছে। তারা জানতে চায় — কোন বিষয়গুলো একজন student-এর ফলাফলকে প্রভাবিত করে, যাতে সীমিত বাজেট ঠিক জায়গায় খরচ করা যায়।

এই dataset synthetic — বাস্তবের মতো করে বানানো, আসল student-দের না। কিন্তু এর সমস্যাগুলো (ভুল বানান, duplicate, অসম্ভব মান, missing) হুবহু real data-র মতো। Platform-এ students.csv নামে আগে থেকেই আছে।

Columnমানে
student_idID
genderF / M
districtবিভাগ
school_typeGovt / Private
parent_educationnone / primary / secondary / higher
internetবাসায় internet আছে কিনা
tutorprivate tutor আছে কিনা
study_hoursসাপ্তাহিক পড়ার ঘণ্টা
attendanceউপস্থিতি (%)
math, science, englishনম্বর (০–১০০)

ধাপ ১: প্রশ্ন ঠিক করো

Data খোলার আগে প্রশ্ন। NGO-র লক্ষ্য থেকে:

  1. Student-দের সামগ্রিক ফলাফল কেমন? কতজন pass করে?
  2. পড়ার সময় আর ফলাফলের সম্পর্ক কতটা শক্তিশালী?
  3. Private tutor কি পার্থক্য আনে? কতটা?
  4. বাবা-মায়ের শিক্ষা কি প্রভাব ফেলে?
  5. কোনো district কি বিশেষভাবে পিছিয়ে আছে?

প্রতিটা প্রশ্নের উত্তর NGO একটা সিদ্ধান্তে ব্যবহার করতে পারবে — যেমন "free tutoring program শুরু করবো কিনা"। এটাই ভালো প্রশ্নের লক্ষণ।

ধাপ ২: Load আর প্রথম দেখা

main.py
main.py

describe()-এ একটা জিনিস চোখে পড়ার কথা — attendance-এর max ১৫০! উপস্থিতি ১০০%-এর বেশি হতে পারে না। এটা data entry-র ভুল।

ধাপ ৩: Category column

main.py

district-এ সমস্যা: Dhaka, dhaka, DHAKA, " Dhaka" — একই জায়গা, আলাদা লেখা। Groupby করলে এগুলো আলাদা দল হয়ে যাবে।

ধাপ ৪: Missing আর duplicate

main.py

আমাদের সমস্যার তালিকা

সমস্যাকতগুলোসম্ভাব্য কারণ
Duplicate row৮একই form দুবার জমা
District-এর ভিন্ন বানান৮টা district, ৩৩ রকম লেখাহাতে লেখা data
Attendance > 100৬typo
Study hours missing৩০student উত্তর দেয়নি
কিছু নম্বর missing৩১পরীক্ষা দেয়নি / তথ্য হারিয়েছে

Exercise আর challenge-এ এই report-টাই code দিয়ে বানাবে। পরের lesson-এ প্রতিটার সমাধান।

Exercise

Exercise

Dataset-এর প্রথম পরিচয়

+20 XP

students.csv load করে df বানাও, তারপর:

  • n_rows, n_cols — row আর column সংখ্যা
  • missing — যেসব column-এ অন্তত একটা missing আছে শুধু সেগুলো, dict হিসেবে ({"study_hours": ..., ...})
  • tutor_share — কত ভাগ student-এর tutor আছে (tutor == "yes"), 2 ঘর দশমিকে round
solution.py

Quiz

  1. Q1Data analysis project-এ সবার আগে কী করা উচিত?
  2. Q2Dataset-এ 'dhaka', ' Dhaka', 'DHAKA' — তিনটা আলাদা মান। সমস্যা কী?
  3. Q3Data-তে সমস্যা পেলে প্রথমে কী করবে?
0/3 answered

Challenge

Challenge

Data quality report

+50 XP

Cleaning শুরুর আগে সমস্যাগুলো মাপো। quality_report(df) function লেখো যেটা একটা dict return করে:

  • "duplicates" — হুবহু একই row কতগুলো (প্রথমটা বাদে বাকিগুলো)
  • "missing" — missing আছে এমন column → সংখ্যা (dict)
  • "impossible_attendance" — attendance 100-এর বেশি কতগুলো
  • "district_spellings" — district column-এ এখন কতগুলো আলাদা লেখা
  • "districts" — আগে-পরের space কেটে আর Title Case করলে কতগুলো আসল district

সব মান সাধারণ int (বা int-এর dict)।

solution.py

বাস্তবে কোথায় ব্যবহার হয়?

Data team-এ নতুন dataset এলে প্রথম deliverable প্রায়ই ঠিক এই quality report — model নয়। কারণ:

  • Garbage in, garbage out — নোংরা data দিয়ে বানানো model যত ভালোই হোক, ভুল শিখবে
  • Data-র উৎস (যারা collect করেছে) কে জানানো যায় কোথায় সমস্যা, যাতে ভবিষ্যতে ঠিক হয়
  • Production ML system-এ এই চেকগুলো automate করা হয় — নতুন data আসার সাথে সাথে চলে, সমস্যা পেলে alert দেয় (MLOps module-এ "data validation")

Interview প্রশ্ন

  • Beginner: নতুন dataset পেলে প্রথম ৫টা কাজ কী করবে?
  • Intermediate: Duplicate row আর duplicate ID-র পার্থক্য কী? দুটো কখন আলাদা সমস্যা নির্দেশ করে?
  • Advanced: Production pipeline-এ data quality check কীভাবে automate করবে? (schema, range, uniqueness, distribution drift)

এরপর কী?

সমস্যার তালিকা হাতে। পরের lesson-এ প্রতিটার জন্য একটা যুক্তিসঙ্গত নিয়ম ঠিক করে পুরো dataset পরিষ্কার করবো — Data Cleaning।