মূল content-এ যাও

Python for AI/Pandas/Lesson 46

Missing Data

NaN খুঁজে বের করা (isna), কতটা missing তা মাপা, বাদ দেওয়া (dropna) বনাম পূরণ করা (fillna — median, mode, ffill) — আর কোনটা কখন, কেন।

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

সহজ ভাষায়

Real data-তে প্রায় সবসময় কিছু ঘর খালি — form-এ কেউ বয়স লেখেনি, sensor কাজ করেনি, দুটো file মেলাতে গিয়ে মিল পাওয়া যায়নি। Pandas এগুলোকে দেখায় NaN (Not a Number) বা None হিসেবে।

main.py

কেন দরকার?

  • বেশিরভাগ ML model (scikit-learn-এর অনেকগুলো) NaN পেলে সরাসরি error দেয়
  • NaN একটা হিসাবে ঢুকলে পুরো ফলাফল NaN — যোগফল, গড় সব নষ্ট
  • আর কতটা data missing, কেন missing — এটা নিজেই গুরুত্বপূর্ণ তথ্য

কতটা missing?

main.py

income-এর ৮৩% missing — এই column থেকে model প্রায় কিছুই শিখবে না। সাধারণ নিয়ম: অনেক বেশি missing (যেমন ৫০%-এর বেশি) column বাদ দেওয়ার কথা ভাবো।

সমাধান ১: বাদ দেওয়া (dropna)

main.py
লেখাকী বাদ যায়
dropna()যেকোনো missing আছে এমন row
dropna(subset=["label"])শুধু label missing এমন row
dropna(axis=1)missing আছে এমন column

সহজ, কিন্তু data হারায়। ১০০০ row-এর প্রতিটা column-এ ৫% করে missing হলে dropna()-এর পর হয়তো অর্ধেক data-ও থাকবে না।

সমাধান ২: পূরণ করা (fillna)

main.py
Dataকী দিয়ে পূরণকেন
সংখ্যা, outlier নেইmean
সংখ্যা, outlier আছেmedianoutlier-এ প্রভাবিত হয় না
Category (text)mode (সবচেয়ে common)
সময়ের ধারা (দৈনিক দাম)ffill (আগের মান)কাল যা ছিল, আজও সম্ভবত কাছাকাছি
Missing নিজেই তথ্য"unknown" বা আলাদা flag column

ffill: সময়ের data

main.py

Missing নিজেই একটা feature

main.py

হয়তো যারা income লেখেনি তাদের loan default করার সম্ভাবনা বেশি — তখন "missing ছিল কিনা" model-এর জন্য দরকারি তথ্য। পূরণ করে ফেললে তথ্যটা হারিয়ে যেত।

Exercise

Exercise

Missing report আর পূরণ

+20 XP

df-এ কিছু ঘর খালি।

  • missing — প্রতিটা column-এ কতগুলো missing, একটা dict ({"name": 0, ...})
  • filled — একটা নতুন DataFrame যেখানে age-এর missing মান age-এর median দিয়ে পূরণ করা (বাকি column যেমন ছিল)

মূল df বদলাবে না।

solution.py

Quiz

  1. Q1df["age"] == np.nan দিয়ে missing খোঁজা যায় না কেন?
  2. Q2Salary column-এর missing পূরণে mean-এর বদলে median কেন প্রায়ই ভালো?
  3. Q3Test data-র missing মান পূরণ করতে কোন median ব্যবহার করবে?
0/3 answered

Challenge

Challenge

Model-এর জন্য dataset পরিষ্কার

+50 XP

clean(df, target) function লেখো যেটা একটা dataset model-ready বানায়:

  1. যেসব row-এ target missing — বাদ (label ছাড়া sample দিয়ে শেখা যায় না)
  2. সংখ্যার column-এর missing → সেই column-এর median
  3. বাকি (text) column-এর missing → সেই column-এর সবচেয়ে বেশি আসা মান (mode)
  4. Index 0 থেকে নতুন করে

ফলাফলে কোনো missing থাকবে না, আর মূল df বদলাবে না।

solution.py

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

Train-এর পরিসংখ্যান দিয়ে test পূরণ — real ML pipeline-এর সঠিক উপায় (scikit-learn-এর SimpleImputer ঠিক এটাই করে):

main.py

Test-এর নিজের median (45) দিয়ে পূরণ করলে model "ভবিষ্যৎ" থেকে তথ্য পেয়ে যেত। Real deployment-এ নতুন user এলে তার জন্য test-এর median জানা থাকে না — শুধু training-এর পরিসংখ্যানই থাকে।

Interview প্রশ্ন

  • Beginner: Missing value খুঁজতে আর গুনতে কোন method?
  • Intermediate: কখন row বাদ দেবে আর কখন পূরণ করবে? Mean বনাম median বনাম mode?
  • Advanced: MCAR, MAR, MNAR কী? Missingness-এর ধরন imputation-এর পদ্ধতি বাছাইয়ে কীভাবে প্রভাব ফেলে?

এরপর কী?

Data পরিষ্কার। এখন প্রশ্ন করার পালা — "প্রতিটা department-এর গড় CGPA কত?", "কোন শহরে বিক্রি সবচেয়ে বেশি?" পরের lesson: GroupBy।