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 পড়তে এক লাইন:
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 | কাজ | উদাহরণ |
|---|---|---|
sep | column separator | sep=";", sep="\t" |
usecols | শুধু এই column | usecols=["date", "amount"] |
na_values | এগুলোও missing | na_values=["N/A", "-"] |
parse_dates | তারিখ হিসেবে পড়ো | parse_dates=["date"] |
dtype | type ঠিক করে দাও | dtype={"zip": str} |
nrows | প্রথম n row | nrows=1000 (বড় file আগে দেখতে) |
encoding | অক্ষরের encoding | encoding="utf-8" |
naive-এ তিনটা সমস্যা: zip-এর শুরুর 0 হারিয়েছে, তারিখ text, আর score text (কারণ N/A, -)। ঠিক parameter দিয়ে তিনটাই সমাধান।
info(): load-এর পর যাচাই
info() দেখায় প্রতিটা column-এর type আর কতগুলো মান missing না (non-null)। Score-এর 2 non-null মানে 1টা missing।
Save: to_csv
index=False না দিলে index-ও একটা column হিসেবে লেখা হয়, পরে পড়লে Unnamed: 0 নামে অদ্ভুত column আসে।
Exercise
Exercise
Semicolon-ওয়ালা CSV
ইউরোপের অনেক dataset-এ comma না, semicolon (`;`) দিয়ে column আলাদা। prices.csv পড়ে df বানাও, তারপর avg_price = price column-এর গড়।
Quiz
Challenge
Challenge
অগোছালো sales data load
load_sales(path) function লেখো যেটা একটা sales CSV ঠিকমতো load করে:
"N/A"আর"-"— দুটোকেই missing (NaN) হিসেবে পড়বেdatecolumn-কে datetime হিসেবে পড়বে- শুধু
date,product,amountcolumn নেবে (বাকি বাদ) - তারিখ অনুযায়ী পুরনো থেকে নতুন সাজাবে, আর index 0 থেকে নতুন করে বসাবে
বাস্তবে কোথায় ব্যবহার হয়?
বড় dataset-এর প্রথম পরিচয় — পুরোটা না পড়ে আগে একটা অংশ দেখা, তারপর ঠিক parameter বেছে নেওয়া:
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।