হাতে না করে pandas দিয়ে ডেটা পরিষ্কার করবেন কেন?

pandas-এ ডেটা পরিষ্কার করা কাজে দেয়, কারণ প্রতিটি ধাপ লিখিত থাকে এবং পরের মাসের এক্সপোর্ট করা ডেটায় কয়েক সেকেন্ডেই আবার চালানো যায়। অন্যদিকে, স্প্রেডশিটে হাতে সংশোধন করা ধীরগতির, সহজেই ভুলে যাওয়া যায় এবং নিরীক্ষা করা অসম্ভব।

ধরুন, Fernhill Gardens নামে একটি কাল্পনিক বাগানসামগ্রী বিক্রয়কেন্দ্রের গোষ্ঠী আছে, যার চারটি শাখা রয়েছে। অর্থ বিশ্লেষক Tomasz প্রতি মাসে অনলাইন অর্ডারের একটি CSV ফাইল পান। নিচের নমুনায় একই অর্ডার দুবার আছে, শাখার নাম কয়েকভাবে লেখা, টাকার অঙ্কে মুদ্রার চিহ্ন ও কমা আছে, তারিখে কখনো দিন আগে আবার কখনো বছর আগে লেখা এবং অনুপস্থিত মানের জায়গায় ফাঁকা ঘর, 'প্রযোজ্য নয়' ও '-' আছে। হাতে ঠিক করতে এক দিন লাগে, আর মোট হিসাব কখনোই অর্থপ্রদান সেবাদাতার প্রতিবেদনের সঙ্গে পুরোপুরি মেলে না।

order_idsiteorder_dateamountpostcode
10231লিডস03/11/2026£1,240.00এলএস6
10231লিডস03/11/2026£1,240.00এলএস6
10232লিডস2026-11-0486.50প্রযোজ্য নয়
10233ইয়র্ক05/11/2026-ওয়াইও1
10234হ্যারোগেট142

ধাপে ধাপে pandas দিয়ে ডেটা কীভাবে পরিষ্কার করবেন?

pandas-এ ডেটা পরিষ্কার করতে প্রথমে অনুপস্থিত মানের চিহ্নগুলো নির্দিষ্ট করে ডেটা লোড করুন, তারপর তা পরীক্ষা করুন, লেখার ধরন একরূপ করুন, সংখ্যা ও তারিখ সঠিক বিন্যাসে রূপান্তর করুন, সদৃশ রেকর্ড সরান, বাকি ফাঁকগুলো কীভাবে সামলাবেন তা ঠিক করুন এবং শেষে নির্ভরযোগ্য মোটের সঙ্গে ফল মিলিয়ে দেখুন। এই ক্রমে কাজ করলে একটি সংশোধন অন্যটির ফল নষ্ট করে না।

1. অনুপস্থিত মানের চিহ্নগুলো নির্দিষ্ট করে ডেটা লোড করুন

pandas-এর read_csv ফাংশন ফাইলটি পড়ে একটি DataFrame-এ রাখে। ফাঁকা ঘরের মতো যেসব মানকে pandas আগে থেকেই অনুপস্থিত তথ্য হিসেবে চেনে, সেগুলোর পাশাপাশি na_values আর্গুমেন্টে 'প্রযোজ্য নয়' ও '-'-এর মতো অতিরিক্ত স্ট্রিংয়ের তালিকা দেওয়া যায়, যাতে সেগুলোকেও অনুপস্থিত তথ্য হিসেবে ধরা হয়। এখানে সেগুলো নির্ধারণ করে দিলে পরে আর খুঁজতে হয় না।

2. কিছু বদলানোর আগে পরীক্ষা করুন

head দিয়ে প্রথম কয়েকটি সারি, info দিয়ে কলামের তথ্যের ধরন ও কতগুলো মান অনুপস্থিত নয় তা দেখুন, এবং isna-এর সঙ্গে sum ব্যবহার করে প্রতিটি কলামে অনুপস্থিত মানের সংখ্যা দেখুন। যা পান তা লিখে রাখুন: ফার্নহিলে amount টেক্সট হিসেবে সংরক্ষিত এবং order_date-এ একাধিক বিন্যাস রয়েছে।

3. লেখায় একরূপতা আনুন

কলামে স্ট্রিং মেথড ব্যবহার করুন: str.strip শুরুর ও শেষের ফাঁকা স্থান সরায়, আর str.lower বা str.title বড় ও ছোট হাতের অক্ষরের ব্যবহার একরকম করে। ফলে ' Leeds', 'leeds ' ও 'LEEDS' একই স্থান হিসেবে গণ্য হয়। এরপর বাকি বানানভেদ ধরতে unique দিয়ে স্বতন্ত্র মানগুলোর তালিকা করুন।

4. সংখ্যাগুলো রূপান্তর করুন

str.replace দিয়ে মুদ্রার চিহ্ন ও হাজারের বিভাজক কমা সরান, তারপর to_numeric দিয়ে রূপান্তর করুন। এর errors আর্গুমেন্ট coerce করলে যেসব মান এটি বুঝতে পারে না, সেগুলোতে এসে থেমে যাওয়ার বদলে অনুপস্থিত মান হিসেবে চিহ্নিত করে। ফলে ওই সারিগুলো অজান্তে হারিয়ে না ফেলে আপনি গুনতে ও পর্যালোচনা করতে পারবেন।

5. তারিখ রূপান্তর করুন

to_datetime লেখাকে যথাযথ তারিখে রূপান্তর করে। একাধিক ধরনের বিন্যাস থাকলে, সম্ভব হলে নির্দিষ্ট বিন্যাস দিন, অথবা যুক্তরাজ্যের রীতিতে লেখা তারিখের জন্য dayfirst সেট করুন। আর errors-এর মান coerce রাখুন, যাতে যে তারিখগুলো বিশ্লেষণ করা যায় না সেগুলো NaT হয়ে যায়—এটি pandas-এ অনুপস্থিত তারিখের চিহ্ন। মনে রাখবেন, dayfirst একটি অগ্রাধিকার, কঠোর নিয়ম নয়, তাই ফলাফল যাচাই করুন।

6. সদৃশ তথ্য সরান

drop_duplicates পুনরাবৃত্ত সারি সরিয়ে দেয়। স্বাভাবিকভাবে, প্রতিটি কলামের মান মিলে গেলেই শুধু একটি সারিকে সদৃশ হিসেবে গণ্য করা হয়; এর subset আর্গুমেন্ট দিয়ে order_id-এর মতো নির্বাচিত কলামের ভিত্তিতে সদৃশ সারি শনাক্ত করা যায়, আর keep নির্ধারণ করে প্রথম না শেষ অনুলিপিটি রাখা হবে।

7. বাকি ঘাটতিগুলো নিয়ে সিদ্ধান্ত নিন

dropna অনুপস্থিত মানযুক্ত সারি সরিয়ে দেয়, তবে স্বাভাবিকভাবে কোনো একটি কলামের মান অনুপস্থিত থাকলেই এটি পুরো সারি বাদ দেয়। amount-এর মতো সত্যিই প্রয়োজনীয় মান অনুপস্থিত থাকা সারিগুলোই শুধু বাদ দিতে এর subset আর্গুমেন্ট ব্যবহার করুন, অথবা নির্দিষ্ট মান দিয়ে শূন্যস্থান পূরণ করতে fillna ব্যবহার করুন। এরপর কলামগুলোর চূড়ান্ত ডেটার ধরন নির্ধারণ করতে astype ব্যবহার করুন, যেমন site-এর জন্য শ্রেণিভিত্তিক ধরন।

তথ্য পরিষ্কার করার একটি ধাপে দুর্বল ও উন্নত কাজ কেমন হয়?

দুর্বল পদ্ধতিতে read_csv দিয়ে ফাইলটি লোড করা হয়, কোনো আর্গুমেন্ট ছাড়াই dropna চালানো হয়, তারপর কোনো আর্গুমেন্ট ছাড়াই drop_duplicates চালানো হয়। পোস্টকোড প্রায়ই ফাঁকা থাকে বলে dropna অনেক বৈধ অর্ডার মুছে ফেলে। আবার ' Leeds' এবং 'leeds ' তখনও আলাদা থাকে বলে কিছু সদৃশ রেকর্ড থেকে যায়। ফলে আয় প্রকৃত অঙ্কের চেয়ে অনেক কম দেখায়, আর কোন সারিগুলো বাদ গেছে, তা কেউ জানে না।

উন্নত প্রক্রিয়ায় ডেটা লোড করার সময় 'N/A' ও '-' অনুপস্থিত মান হিসেবে ধরা হয়, site-এর শুরু ও শেষের ফাঁকা স্থান সরিয়ে প্রতিটি শব্দের প্রথম অক্ষর বড় করা হয়, '£' ও কমা সরানোর পর to_numeric দিয়ে amount রূপান্তর করা হয়, dayfirst ও coerce দিয়ে order_date রূপান্তর করা হয়, order_id অনুযায়ী পুনরাবৃত্তি সরিয়ে প্রথমটি রাখা হয় এবং শুধু amount অনুপস্থিত এমন সারিগুলো বাদ দেওয়া হয়। এরপর প্রতিটি ধাপে কতগুলো সারি সরানো হয়েছে তা দেখানো হয় এবং মোট আয় পেমেন্ট সেবাদাতার প্রতিবেদনের সঙ্গে তুলনা করা হয়। তোমাশ এখন প্রতিটি পার্থক্য ব্যাখ্যা করতে পারেন।

ডেটা পরিষ্কার করার কাজ সফল হয়েছে কি না, তা কীভাবে যাচাই করবেন?

ডেটা পরিষ্কার করা যাচাই করতে, প্রতিটি ধাপের আগে ও পরে সারি গুনুন, একটি গুরুত্বপূর্ণ মোট পরিমাণ স্বাধীন উৎসের সঙ্গে মিলিয়ে দেখুন এবং যেসব সারির মান প্রক্রিয়াকরণের সময় অনুপস্থিত হিসেবে নির্ধারিত হয়েছে সেগুলো পর্যালোচনা করুন। কলামের ধরন নিশ্চিত করতে আবার info চালান এবং সাইটের মতো শ্রেণিগুলোর স্বতন্ত্র মানের তালিকা তৈরি করুন। কোনো ধাপে প্রত্যাশার চেয়ে বেশি সারি বাদ পড়লে, এগোনোর আগে সেগুলো দেখুন।

pandas দিয়ে ডেটা পরিষ্কার করতে AI সহকারী কীভাবে সাহায্য করতে পারে?

প্রতিটি কলাম, তার সমস্যা এবং আপনি কী নিয়ম চান তা বর্ণনা করলে AI সহকারী তথ্য পরিষ্কারের ধাপগুলোর খসড়া তৈরি করতে পারে এবং অপরিচিত ফাংশন ব্যাখ্যা করতে পারে। গ্রাহকের আসল নাম, ঠিকানা বা সম্পূর্ণ পোস্টকোড পেস্ট না করে বানানো নমুনা মান দিয়ে কাঠামোটি বোঝান। প্রতিটি ধাপের পরে সারির সংখ্যা জানাতে বলুন এবং ব্যবহৃত প্রতিটি ফাংশনের আর্গুমেন্ট pandas-এর আনুষ্ঠানিক নথির সঙ্গে মিলিয়ে দেখুন, কারণ সহকারীরা কখনো কখনো এমন বিকল্প প্রস্তাব করে যার অস্তিত্ব নেই বা যা এক সংস্করণ থেকে অন্য সংস্করণে বদলে গেছে।

pandas দিয়ে ডেটা পরিষ্কার করার সময় সাধারণ ভুলগুলো কী?

সবচেয়ে সাধারণ ভুল হলো কোনো আর্গুমেন্ট ছাড়াই dropna চালিয়ে এমন সারিগুলোও হারিয়ে ফেলা, যেগুলো একটি ঐচ্ছিক কলাম ছাড়া বাকি সব দিক দিয়ে ঠিক ছিল। অন্য ভুলগুলো হলো: লেখার ধরন একরকম করার আগে সদৃশ রেকর্ড সরানো, দিন ও মাসের ক্রম না দেখে তারিখ রূপান্তর করা, মূল ফাইলের ওপর নতুন তথ্য লিখে ফেলা এবং পরিষ্কার করা ডেটার মোট পরিমাণ কোনো বিশ্বস্ত হিসাবের সঙ্গে কখনো না মেলানো।

Tosheo.ai-এ এই পাঠটি কোথায় রয়েছে?

এটি ডেটা বিজ্ঞান কোর্সের ডেটা বিজ্ঞান ও বিশ্লেষণ বিভাগের একটি কোডিং পাঠ। Tosheo.ai-এর প্রতিটি বিষয় ধারণা এবং কোড ছাড়া অনুশীলন দিয়ে শুরু হয়। কোডিং পাঠগুলো আরও গভীরে শেখার ঐচ্ছিক ধারা: নিবন্ধনের পর এই পাঠের পূর্ণ হাতে-কলমে সংস্করণে আপনি Python ও pandas ব্যবহার করে ডেটা পরিষ্কারের প্রতিটি ধাপ লিখবেন ও চালাবেন, আর নির্দিষ্ট মানদণ্ডভিত্তিক মূল্যায়ন নির্দেশিকা অনুযায়ী নম্বর পাবেন। Python-এ নতুন হলে Python কোর্স দিয়ে শুরু করুন। এটি ব্যবহারিক দক্ষতা গড়ে তোলে; এটি কোনো নিবিড় প্রশিক্ষণ শিবির বা চাকরির নিশ্চয়তা নয়।

উৎস ও পরিধি

pandas-এর নির্দেশিকা: read_csv (যাচাই করা হয়েছে 19 অক্টোবর 2026) ↗

pandas ব্যবহার নির্দেশিকা: অনুপস্থিত তথ্য নিয়ে কাজ করা (যাচাই করা হয়েছে 19 অক্টোবর 2026) ↗

pandas-এর নির্দেশিকা: DataFrame.dropna (যাচাই করা হয়েছে 19 অক্টোবর 2026) ↗

pandas-এর নির্দেশিকা: DataFrame.drop_duplicates (যাচাই করা হয়েছে 19 অক্টোবর 2026) ↗

pandas-এর নির্দেশিকা: DataFrame.astype (যাচাই করা হয়েছে 19 অক্টোবর 2026) ↗

pandas-এর নির্দেশিকা: to_numeric (যাচাই করা হয়েছে 19 অক্টোবর 2026) ↗

pandas-এর নির্দেশিকা: to_datetime (যাচাই করা হয়েছে 19 অক্টোবর 2026) ↗

pandas-এর নির্দেশিকা: Series.str.strip (যাচাই করা হয়েছে 19 অক্টোবর 2026) ↗