মূল content-এ যাও

Python for AI/Pandas/Lesson 43

CSV থেকে Data Load

pd.read_csv-এর দরকারি parameter — sep, usecols, na_values, parse_dates, dtype; info() দিয়ে যাচাই; আর to_csv দিয়ে save করা।

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

সহজ ভাষায়

Data সাধারণত আসে file থেকে। CSV পড়তে এক লাইন:

main.py

Errors ও Files module-এ csv module দিয়ে যা করেছিলাম — header পড়া, সংখ্যায় রূপান্তর — read_csv সব নিজে করে দেয়। cgpa নিজে থেকেই float64।

Playground-এর প্রতিটা run নতুন folder-এ চলে (আগের run-এর file থাকে না), তাই উদাহরণগুলো আগে file লিখে নেয়। তোমার computer-এ সরাসরি pd.read_csv("data/train.csv") লিখবে। URL থেকেও পড়া যায়: pd.read_csv("https://...")।

কেন দরকার?

Real dataset কখনো নিখুঁত না:

  • Separator comma না হয়ে ; বা tab
  • Missing মান লেখা N/A, -, ?, missing
  • তারিখ text হিসেবে
  • ১০০টা column, দরকার ৫টা
  • ID-র শুরুর 0 হারিয়ে যায় (007 → 7)

read_csv-এর parameter দিয়ে load করার সময়েই এগুলো ঠিক করা যায় — পরে ঘষামাজা করার চেয়ে অনেক পরিষ্কার।

দরকারি parameter

Parameterকাজউদাহরণ
sepcolumn separatorsep=";", sep="\t"
usecolsশুধু এই columnusecols=["date", "amount"]
na_valuesএগুলোও missingna_values=["N/A", "-"]
parse_datesতারিখ হিসেবে পড়োparse_dates=["date"]
dtypetype ঠিক করে দাওdtype={"zip": str}
nrowsপ্রথম n rownrows=1000 (বড় file আগে দেখতে)
encodingঅক্ষরের encodingencoding="utf-8"
main.py

naive-এ তিনটা সমস্যা: zip-এর শুরুর 0 হারিয়েছে, তারিখ text, আর score text (কারণ N/A, -)। ঠিক parameter দিয়ে তিনটাই সমাধান।

info(): load-এর পর যাচাই

main.py

info() দেখায় প্রতিটা column-এর type আর কতগুলো মান missing না (non-null)। Score-এর 2 non-null মানে 1টা missing।

Save: to_csv

main.py

index=False না দিলে index-ও একটা column হিসেবে লেখা হয়, পরে পড়লে Unnamed: 0 নামে অদ্ভুত column আসে।

Exercise

Exercise

Semicolon-ওয়ালা CSV

+20 XP

ইউরোপের অনেক dataset-এ comma না, semicolon (`;`) দিয়ে column আলাদা। prices.csv পড়ে df বানাও, তারপর avg_price = price column-এর গড়।

solution.py

Quiz

  1. Q1Missing মানকে "N/A" লেখা থাকলে na_values না দিয়ে পড়লে কী হয়?
  2. Q2df.to_csv("out.csv") লিখলে file-এ কী বাড়তি আসে?
  3. Q3বড় CSV থেকে শুধু ৩টা column দরকার হলে কী করবে?
0/3 answered

Challenge

Challenge

অগোছালো sales data load

+50 XP

load_sales(path) function লেখো যেটা একটা sales CSV ঠিকমতো load করে:

  • "N/A" আর "-" — দুটোকেই missing (NaN) হিসেবে পড়বে
  • date column-কে datetime হিসেবে পড়বে
  • শুধু date, product, amount column নেবে (বাকি বাদ)
  • তারিখ অনুযায়ী পুরনো থেকে নতুন সাজাবে, আর index 0 থেকে নতুন করে বসাবে
solution.py

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

বড় dataset-এর প্রথম পরিচয় — পুরোটা না পড়ে আগে একটা অংশ দেখা, তারপর ঠিক parameter বেছে নেওয়া:

main.py

nrows=5 দিয়ে আগে দেখে নিলাম কোন column আছে, তারপর usecols দিয়ে শুধু দরকারিগুলো — অপ্রয়োজনীয় notes column বাদ দিয়ে memory বাঁচল।

Interview প্রশ্ন

  • Beginner: pd.read_csv-এ sep আর usecols কী কাজে লাগে?
  • Intermediate: CSV load করার পর কী কী যাচাই করবে? (dtypes, missing, duplicate, অস্বাভাবিক মান)
  • Advanced: RAM-এর চেয়ে বড় CSV কীভাবে process করবে? (chunksize, Parquet, Polars/DuckDB)

এরপর কী?

Data load হলো। এখন এর ভেতর থেকে ঠিক যে row আর column দরকার সেটা বের করা — পরের lesson: Selection: loc ও iloc।