পান্ডাস শ্রেণীগত মানগুলিকে Int মানগুলিতে রূপান্তর করে

Pandasa Srenigata Managulike Int Managulite Rupantara Kare

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

শ্রেণীগতকে int-এ রূপান্তর করার পদ্ধতি

একটি ডেটাফ্রেমের শ্রেণীগতকে int মানগুলিতে রূপান্তর করার জন্য 'পান্ডাস'-এ উপলব্ধ কৌশলগুলি এখানে সরবরাহ করা হয়েছে:

    • DataFrame.replace() পদ্ধতি
    • DataFrame.apply(factorize()) পদ্ধতি

আমরা এই নিবন্ধে এই পদ্ধতিগুলি ব্যবহার করব এবং 'পান্ডাস'-এ উভয় পদ্ধতি কীভাবে ব্যবহার করতে হয় তা বিস্তারিতভাবে ব্যাখ্যা করব।



উদাহরণ # 1: পান্ডাস রিপ্লেস() পদ্ধতি ব্যবহার করা

ডাটাফ্রেমের শ্রেণীগত মানগুলিকে পান্ডা 'DataFrame.replace()' পদ্ধতি ব্যবহার করে int-এ রূপান্তর করা যেতে পারে। আমরা এখানে এই পদ্ধতিটি ব্যবহার করতে শিখব।



পাইথনে এই কৌশলটি সর্বোত্তমভাবে চালানোর জন্য আমরা 'স্পাইডার' টুল ব্যবহার করেছি। স্ক্রিপ্ট লেখা শুরু করতে, 'স্পাইডার' টুলে একটি নতুন পাইথন ফাইল খুলুন। স্ক্রিপ্ট লেখার জন্য সবচেয়ে উল্লেখযোগ্য প্রয়োজন হল উপযুক্ত লাইব্রেরি আমদানি করা। যেহেতু আমাদের একটি 'পান্ডা' পদ্ধতি প্রয়োগ করতে হবে, তাই 'পান্ডা' এর বৈশিষ্ট্যগুলি অ্যাক্সেস করার জন্য আমাদের কাছে 'পিডি হিসাবে পান্ডা আমদানি করুন' থাকবে। তারপর আমরা আমাদের মূল পাইথন কোড শুরু করি। আমরা “pd.DataFrame()” পদ্ধতি ব্যবহার করে একটি DataFrame তৈরি করেছি। DataFrame তিনটি কলাম 'নাম', 'ডিগ্রী', এবং 'আয়' দ্বারা আরম্ভ করা হয়। সমস্ত ডেটাফ্রেমের কলাম একই দৈর্ঘ্যের মান সঞ্চয় করে।



প্রথম কলাম, “নাম”-এ আটটি মান রয়েছে যা হল “বুশ”, “আলবার্ট”, “হ্যারি”, “পিটার”, “এমা”, “নিউটন”, “স্মিথ” এবং “এলসা”। দ্বিতীয় কলাম, “ডিগ্রী”, আটটি শ্রেণীগত মানও সঞ্চয় করে, যেগুলো হল “BS”, “MS”, “MS”, “BS”, “BS”, “BS”, “MS”, এবং “MS”। শেষ কলাম “আয়”-এ আটটি পূর্ণসংখ্যার মান রয়েছে “60000”, “80000”, “75000”, “45000”, “56000”, “65000”, “55000” এবং “70000”। আমরা 'pd.DataFrame()' ফাংশন চালু করার আউটপুট সঞ্চয় করার জন্য একটি DataFrame অবজেক্ট 'স্টাফ' তৈরি করেছি। আমাদের প্রাথমিক ডেটাফ্রেম প্রদর্শন করতে, আমরা স্ক্রিপ্টের চূড়ান্ত লাইনে ডেটাফ্রেমের নাম 'স্টাফ' এর প্যারামিটার হিসাবে 'প্রিন্ট()' পদ্ধতি ব্যবহার করেছি।


টার্মিনালে আউটপুট দেখতে, 'স্পাইডার' টুলে 'রান ফাইল' বোতামটি ব্যবহার করুন বা 'Shift+Enter' কী টিপুন। টার্মিনালে প্রদর্শিত আউটপুট তিনটি কলাম সহ একটি ডেটাফ্রেম দেখায় যা সফলভাবে তৈরি করা হয়েছে।


এখন, আমাদের ডেটাফ্রেম তৈরি করা হয়েছে, আমাদের এটিতে প্রয়োজনীয় কৌশল প্রয়োগ করতে হবে। পান্ডা 'DataFrame.replace()' পদ্ধতিটি একটি নির্দিষ্ট কলামের শ্রেণীগত মানগুলিকে পূর্ণসংখ্যার মানগুলিতে রূপান্তর করতে ব্যবহার করা হবে যাতে মেশিনগুলি তাদের পাঠযোগ্য করে তুলতে পারে।



আমরা নির্দিষ্ট কলামের নামের সাথে ডেটাফ্রেমের নাম প্রদান করেছি যার মানগুলি আমাদের প্রতিস্থাপন করতে হবে, যা হল 'স্টাফ['ডিগ্রী']'। আমরা চাই “ডিগ্রী” কলামের মান, যার শ্রেণীগত মান রয়েছে, পূর্ণসংখ্যার মান দ্বারা প্রতিস্থাপিত হোক। তারপর “.replace()” পদ্ধতিটি চালু করা হয়। আমরা এটি দুটি সেটে পাস করেছি; প্রথমটিতে '['BS', 'MS']' দুটি শ্রেণীগত মান রয়েছে যা আমরা 'ডিগ্রী' কলাম থেকে বের করেছি। আপনি দেখতে পাচ্ছেন, 'ডিগ্রী' কলাম বারবার এই দুটি মান ব্যবহার করে। যদি আমাদের একটি তৃতীয় মান থাকত, আমরা অবশ্যই তাও উল্লেখ করতাম। দ্বিতীয় সেটটিতে দুটি int মান রয়েছে “[0, 1]”, যা যথাক্রমে প্রথম সেটের মানের স্থান নেবে। অন্য প্যারামিটার, 'ইনপ্লেস', 'সত্য' হিসাবে সেট করা হয়েছে, মান প্রতিস্থাপন সক্ষম করে। 'মিথ্যা' এ সেট করা হলে, এটি প্রতিস্থাপনকে অক্ষম করবে। অবশেষে, আমরা আপডেট করা 'স্টাফ' ডেটাফ্রেম প্রদর্শন করতে 'প্রিন্ট()' পদ্ধতি ব্যবহার করেছি।


ফলস্বরূপ ডেটাফ্রেমের 'ডিগ্রী' কলামে পূর্ণসংখ্যার মান রয়েছে। 'BS' মান '0s' দ্বারা প্রতিস্থাপিত হয়, এবং 'MS' প্রতিস্থাপিত হয় '1s' দ্বারা।


এমনকি আপনি “dataframe.dtype” প্রপার্টি ব্যবহার করে প্রতিটি কলামের জন্য ডেটাটাইপ যাচাই করতে পারেন। এটি আমাদের নির্দিষ্ট ডেটাফ্রেমের সমস্ত কলামের ডেটাটাইপ পাবে।


এখানে, আমরা আমাদের ডেটাফ্রেমের ডেটাটাইপগুলি পেয়েছি। আমরা দেখতে পাচ্ছি 'ডিগ্রী' কলামের ডেটাটাইপ 'int64' এ পরিবর্তিত হয়েছে।

উদাহরণ # 2: Pandas apply() পদ্ধতি ব্যবহার করা

শ্রেণীগত মানগুলিকে পূর্ণসংখ্যাতে রূপান্তর করার জন্য পান্ডাদের অন্য পদ্ধতিটি হল 'DataFrame.apply()' ফাংশন। আগের উদাহরণে, আমরা একটি শ্রেণীবদ্ধ কলামকে পূর্ণসংখ্যাতে রূপান্তর করতে শিখেছি। আমরা এখন দেখব কিভাবে DataFrame-এর সমস্ত শ্রেণীবদ্ধ কলামকে int-এ রূপান্তর করা যায়।

ব্যবহারিক বাস্তবায়নের সাথে শুরু করে, আমাদের অবশ্যই এই পদ্ধতির জন্য প্রয়োজনীয় লাইব্রেরি আমদানি করতে হবে, যা পান্ডা। আমরা 'স্পাইডার' টুলে আমাদের পাইথন ফাইলে পান্ডা আমদানি করতে 'পিডি হিসাবে পান্ডা আমদানি করুন' স্ক্রিপ্টটি ব্যবহার করেছি, যা আমাদেরকে 'পিডি' ব্যবহার করে পান্ডা মডিউলগুলি অ্যাক্সেস করার অনুমতি দেবে। আমরা একটি ডেটাফ্রেম তৈরি করতে 'pd.DataFrame()' ফাংশন ব্যবহার করেছি।

এই ডেটাফ্রেমে চারটি কলাম আছে “গ্রুপ”, “পজিশন”, “স্কোর” এবং “সহায়তা”। প্রতিটি কলাম 9টি মান সঞ্চয় করে। “গ্রুপ” কলামের মানগুলো হল “X”, “X”, “Y”, “X”, “Y”, “Y”, “Y”, “X”, এবং “Y”। 'পজিশন' কলামে 9টি মান রয়েছে যা হল 'A', 'C', 'D', 'A', 'C', 'B', 'B', 'D', এবং 'B'। “স্কোর” কলামে “4”, “8”, “7”, “10”, “9”, “5”, “7”, “3”, এবং “23” হিসাবে পূর্ণসংখ্যার মান রয়েছে। শেষ কলাম, 'সহায়তা', '10', '2', '3', '9', '3', '7', '4', '2', এবং '9' মান রয়েছে।

আমরা একটি DataFrame অবজেক্ট 'prog' তৈরি করেছি এবং এটিকে 'pd.DataFrame()' পদ্ধতি চালু করার আউটপুট বরাদ্দ করেছি। সুতরাং, 'pd.DataFrame()' থেকে উৎপন্ন ডেটাফ্রেম ফ্রেমটি 'প্রোগ' এ সংরক্ষণ করা হবে। এখন, আমরা এই বস্তুটি ব্যবহার করে ডেটাফ্রেম অ্যাক্সেস করতে পারি। এই ডেটাফ্রেমটি দেখার জন্য, আমরা ডেটাফ্রেম অবজেক্ট 'প্রোগ' এর প্যারামিটার হিসাবে 'প্রিন্ট()' পদ্ধতি ব্যবহার করেছি।


পূর্ববর্তী পাইথন প্রোগ্রামটি চালানো হলে, টার্মিনালে চারটি কলাম সহ একটি ডেটাফ্রেম প্রদর্শিত হবে।


একাধিক শ্রেণীবদ্ধ কলামকে পূর্ণসংখ্যাতে রূপান্তর করতে, আমরা এই কৌশলটি অনুসরণ করেছি। আমাদের প্রথমে পান্ডা “DataFrame.select_dtypes().columns” পদ্ধতি ব্যবহার করে অবজেক্ট ডেটাটাইপ ধারণ করে এমন সমস্ত কলাম নির্বাচন করতে হবে। যখন আমরা প্রয়োজন অনুযায়ী আমাদের স্ক্রিপ্টে এটি ব্যবহার করি, তখন এটি হবে 'prog.select_dtypes(['object']).columns'। এটি 'প্রোগ' ডেটাফ্রেমে ডেটাটাইপ 'অবজেক্ট' সহ সমস্ত কলাম নির্বাচন করবে। এই পদ্ধতির আউটপুট সংরক্ষণ করার জন্য আমরা একটি ভেরিয়েবল 'concate_col' তৈরি করেছি। আমরা এখন এই পরিবর্তনশীল 'concat_col' ব্যবহার করে 'অবজেক্ট' ডেটাটাইপ কলামগুলি অ্যাক্সেস করতে পারি।

এখন, এই কলামগুলিকে পূর্ণসংখ্যাতে রূপান্তর করতে, আমরা 'pd.factorize()' পদ্ধতির সাথে পান্ডা 'DataFrame.apply()' ব্যবহার করেছি। আমরা DataFrame নামের সাথে “concat_col” ভেরিয়েবল ব্যবহার করেছি তারপর “.apply()” পদ্ধতি চালু করা হয়েছে। “.apply” পদ্ধতির বন্ধনীর মধ্যে, আমরা “pd.factorize()” পদ্ধতিকে বলেছি যেখানে “x” “অবজেক্ট” ডেটাটাইপ সহ “prog” DataFrame থেকে যেকোনো মান হতে পারে। সুতরাং, কোডের এই পুরো লাইনটি “prog['concat_col'] = prog['concat_col'].apply(lambda x : pd.factorize(x)[0])” হিসাবে লেখা হয়েছে। ফ্যাক্টরাইজ পদ্ধতিটি এর সাথে একটি মান নেবে। একটি 'অবজেক্ট' ডেটাটাইপ এবং এটিকে 'int' এ রূপান্তর করুন। 'প্রোগ' ভেরিয়েবলটিকে প্যারামিটার হিসাবে পাস করে 'প্রিন্ট()' ফাংশনটিকে কল করে চূড়ান্ত আউটপুট প্রদর্শন করা যেতে পারে।


আপডেট করা ডেটাফ্রেমে, আমরা 'গ্রুপ' এবং 'পজিশন' কলামের মানগুলি প্রাথমিকভাবে শ্রেণীবদ্ধ ছিল, অর্থাৎ অবজেক্টের মানগুলি পর্যবেক্ষণ করতে পারি। এখনও আপডেট করা আউটপুট ডেটাফ্রেমে, উভয় কলামেই পূর্ণসংখ্যার মান রয়েছে। 'গ্রুপ' কলামে, 'X' কে '0' এবং 'Y' কে '1' দ্বারা প্রতিস্থাপিত করা হয়েছে। যেখানে 'পজিশন' কলাম 'A' কে '0', 'C' দ্বারা '1', 'D' দ্বারা '2' এবং 'B' কে '3' দ্বারা প্রতিস্থাপিত করা হয়েছে।


এখন, আপডেট করা ডেটাটাইপ যাচাই করা যাক।


নিম্নলিখিত সমস্ত কলামে 'int64' ডেটাটাইপ রয়েছে।

উপসংহার

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