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_id | ID |
gender | F / M |
district | বিভাগ |
school_type | Govt / Private |
parent_education | none / primary / secondary / higher |
internet | বাসায় internet আছে কিনা |
tutor | private tutor আছে কিনা |
study_hours | সাপ্তাহিক পড়ার ঘণ্টা |
attendance | উপস্থিতি (%) |
math, science, english | নম্বর (০–১০০) |
ধাপ ১: প্রশ্ন ঠিক করো
Data খোলার আগে প্রশ্ন। NGO-র লক্ষ্য থেকে:
- Student-দের সামগ্রিক ফলাফল কেমন? কতজন pass করে?
- পড়ার সময় আর ফলাফলের সম্পর্ক কতটা শক্তিশালী?
- Private tutor কি পার্থক্য আনে? কতটা?
- বাবা-মায়ের শিক্ষা কি প্রভাব ফেলে?
- কোনো district কি বিশেষভাবে পিছিয়ে আছে?
প্রতিটা প্রশ্নের উত্তর NGO একটা সিদ্ধান্তে ব্যবহার করতে পারবে — যেমন "free tutoring program শুরু করবো কিনা"। এটাই ভালো প্রশ্নের লক্ষণ।
ধাপ ২: Load আর প্রথম দেখা
describe()-এ একটা জিনিস চোখে পড়ার কথা — attendance-এর max ১৫০! উপস্থিতি ১০০%-এর বেশি হতে পারে না। এটা data entry-র ভুল।
ধাপ ৩: Category column
district-এ সমস্যা: Dhaka, dhaka, DHAKA, " Dhaka" — একই জায়গা, আলাদা লেখা। Groupby করলে এগুলো আলাদা দল হয়ে যাবে।
ধাপ ৪: Missing আর duplicate
আমাদের সমস্যার তালিকা
| সমস্যা | কতগুলো | সম্ভাব্য কারণ |
|---|---|---|
| Duplicate row | ৮ | একই form দুবার জমা |
| District-এর ভিন্ন বানান | ৮টা district, ৩৩ রকম লেখা | হাতে লেখা data |
| Attendance > 100 | ৬ | typo |
| Study hours missing | ৩০ | student উত্তর দেয়নি |
| কিছু নম্বর missing | ৩১ | পরীক্ষা দেয়নি / তথ্য হারিয়েছে |
Exercise আর challenge-এ এই report-টাই code দিয়ে বানাবে। পরের lesson-এ প্রতিটার সমাধান।
Exercise
Exercise
Dataset-এর প্রথম পরিচয়
students.csv load করে df বানাও, তারপর:
n_rows,n_cols— row আর column সংখ্যাmissing— যেসব column-এ অন্তত একটা missing আছে শুধু সেগুলো, dict হিসেবে ({"study_hours": ..., ...})tutor_share— কত ভাগ student-এর tutor আছে (tutor == "yes"), 2 ঘর দশমিকে round
Quiz
Challenge
Challenge
Data quality report
Cleaning শুরুর আগে সমস্যাগুলো মাপো। quality_report(df) function লেখো যেটা একটা dict return করে:
"duplicates"— হুবহু একই row কতগুলো (প্রথমটা বাদে বাকিগুলো)"missing"— missing আছে এমন column → সংখ্যা (dict)"impossible_attendance"— attendance 100-এর বেশি কতগুলো"district_spellings"—districtcolumn-এ এখন কতগুলো আলাদা লেখা"districts"— আগে-পরের space কেটে আর Title Case করলে কতগুলো আসল district
সব মান সাধারণ int (বা int-এর dict)।
বাস্তবে কোথায় ব্যবহার হয়?
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।