মূল content-এ যাও

Python for AI/Errors ও Files/Lesson 31

CSV

Tabular data-র সবচেয়ে common format — csv module দিয়ে পড়া ও লেখা, DictReader/DictWriter, newline="", সব মান যে string হয়ে আসে, আর নোংরা data পরিষ্কার করা।

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

সহজ ভাষায়

CSV (Comma-Separated Values) হলো সবচেয়ে সহজ table format — প্রতিটা লাইন একটা row, comma দিয়ে column আলাদা:

name,dept,cgpa
Rafi,CSE,3.4
Mim,EEE,3.9

Excel আর Google Sheets থেকে export করা যায়, আর Kaggle-এর বেশিরভাগ dataset CSV-তে।

কেন দরকার?

তোমার প্রথম ML project-এর data প্রায় নিশ্চিতভাবেই একটা CSV — house prices, student performance, customer churn। Pandas দিয়ে এক লাইনে পড়া যাবে (pd.read_csv), কিন্তু ভেতরে কী হয় সেটা বোঝা জরুরি — বিশেষ করে যখন data নোংরা।

কেন নিজে split(",") করবে না?

main.py

split ভুল করে quote-এর ভেতরের comma-তেও ভাগ করেছে। csv module CSV-র সব নিয়ম (quote, escape, নতুন লাইন) জানে।

পড়া: csv.reader আর csv.DictReader

main.py
প্রতিটা rowকখন
csv.readerlist: ["Rafi", "CSE", "3.4"]Header নেই, বা position দিয়ে কাজ
csv.DictReaderdict: {"name": "Rafi", ...}Header আছে — প্রায় সবসময় এটাই ভালো

সবচেয়ে common ভুল: row["cgpa"] হলো string "3.4", সংখ্যা না। "3.4" > "10" = True! তুলনা বা হিসাবের আগে float() করো।

লেখা: csv.writer আর csv.DictWriter

main.py

খেয়াল করো: "fine-tuned, 3 epochs"-এ comma আছে, তাই csv module নিজেই quote দিয়েছে।

Exercise

Exercise

Column-এর গড়

+20 XP

average_column(path, column) function লেখো যেটা একটা CSV file পড়ে নির্দিষ্ট column-এর মানগুলোর গড় return করে।

csv.DictReader ব্যবহার করো। মনে রেখো — CSV থেকে সব মান string হিসেবে আসে।

solution.py

Quiz

  1. Q1CSV থেকে পড়া "42" কোন type?
  2. Q2মানের ভেতরেই comma থাকলে ("Dhaka, Bangladesh") কী হয়?
  3. Q3CSV file খোলার সময় newline="" কেন দেওয়া হয়?
0/3 answered

Challenge

Challenge

নোংরা CSV পরিষ্কার করো

+50 XP

clean_csv(in_path, out_path) function লেখো যেটা একটা নোংরা name,age,city CSV পড়ে পরিষ্কার একটা CSV লেখে:

  • প্রতিটা মানের আগে-পরের space কাটবে
  • যেসব row-এ কোনো মান খালি, বা age পূর্ণসংখ্যা না — সেগুলো বাদ
  • city Title Case করবে ("dhaka" → "Dhaka")
  • Output-এ একই header (name,age,city)
  • কতগুলো row রাখা হলো সেই সংখ্যা return করবে
solution.py

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

একটা student dataset থেকে department অনুযায়ী গড় CGPA — groupby-এর হাতে-কলমে সংস্করণ:

main.py

Pandas-এ এই পুরো কাজটা হবে এক লাইনে: df.groupby("dept")["cgpa"].mean()। কিন্তু এখন তুমি জানো সেই এক লাইন ভেতরে কী করে।

Interview প্রশ্ন

  • Beginner: CSV কী? csv.reader আর csv.DictReader-এর পার্থক্য কী?
  • Intermediate: CSV-তে type information না থাকায় কী কী সমস্যা হতে পারে? (যেমন phone নম্বরের শুরুর 0 হারিয়ে যাওয়া, "N/A")
  • Advanced: বড় dataset-এর জন্য CSV-র বদলে Parquet কেন ব্যবহার করা হয়? (Column-ভিত্তিক, compressed, type সংরক্ষণ করে।)

এরপর কী?

এই পুরো module-এ বারবার with open(...) as f: লিখেছি। এই with আসলে কী করে, আর নিজের জন্য কীভাবে বানানো যায়? পরের lesson: Context Managers।