কম্পিউটার টিউটোরিয়াল

Python - Pandas DataFrame-এ রো র‍‍্যাঙ্কিং করার পদ্ধতি


প্রদত্ত ডেটা ফ্রেমে প্রতিটি রোর র‍‍্যাঙ্ক ধারণকারী একটি কলাম যোগ করা যা ডেটা ফ্রেম সর্ট করতে এবং একটি নির্দিষ্ট এলিমেন্টের র‍‍্যাঙ্ক নির্ধারণ করতে সাহায্য করে, উদাহরণস্বরূপ:

আমাদের ডেটাফ্রেম

Name Play Time (in hours) Rate
0 Call Of Duty 45 Better than Average
1 Total Overdose 46 Good
2 GTA3 52 Best
3 Bully 22 Average

আউটপুট

Name Play Time (in hours) Rate ranking
0 Call Of Duty 45 Better than Average 3.0
1 Total Overdose 46 Good 2.0
2 GTA3 52 Best 1.0
3 Bully 22 Average 4.0

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

এখন আমরা ডেটা ফ্রেমে র‍‍্যাঙ্ক কীভাবে অ্যাসাইন করব

আমাদের ডেটাফ্রেমের এলিমেন্টগুলোর র‍‍্যাঙ্ক অ্যাসাইন করতে, আমরা pandas লাইব্রেরির একটি বিল্ট-ইন ফাংশন ব্যবহার করি যা হল .rank() ফাংশন। আমরা যে ক্রাইটেরিয়া দিয়ে এলিমেন্টগুলো র‍‍্যাঙ্ক করছি সেটি পাস করি, এবং এই ফাংশন প্রতিটি রোতে একটি নতুন কলাম রিটার্ন করে যেখানে র‍‍্যাঙ্ক সংরক্ষিত থাকে।

উদাহরণ

.rank() ফাংশন ব্যবহার করার কোড:

import pandas as pd
games = {'Name': ['Call Of Duty', 'Total Overdose', 'GTA 3', 'Bully'],
         'Play Time(in hours)': ['45', '46', '52', '22'],
         'Rate': ['Better than Average', 'Good', 'Best', 'Average']}
df = pd.DataFrame(games)
df['ranking'] = df['Play Time(in hours)'].rank(ascending=0)
print(df)
# Hello World program in Python
print("Hello World!");

আউটপুট

    Name Play Time(in hours)         Rate  ranking
0  Call Of Duty                45  Better than Average      3.0
1  TotalOverdose               46                 Good      2.0
2  GTA 3                       52                 Best      1.0
3  Bully                       22              Average      4.0

উপরের কোডের ব্যাখ্যা

এই কোডে, আমরা পান্ডাস লাইব্রেরির বিল্ট-ইন ফাংশন ব্যবহার করে দেয়া ডেটা ফ্রেমে উপস্থিত প্রতিটি এলিমেন্ট র‍‍্যাঙ্ক করছি। আমরা এলিমেন্টগুলো র‍‍্যাঙ্ক করতে সেরা ক্রাইটেরিয়া হিসেবে কলাম 'Play Time(in hours)' ব্যবহার করতে পারি।

এখন আমরা আমাদের ডেটা ফ্রেমে 'ranking' নামে একটি কলাম যোগ করি এবং আমাদের .rank() ফাংশনটি সেটিতে ব্যবহার করি এবং যে কলামের জন্য র‍‍্যাঙ্কিং দরকার সেটি পাস করি (এই কেসে, এটি Play Time(in hours) কলাম) এখন যখন আমাদের নতুন কলাম তৈরি হয়ে যায়, আমরা আমাদের ডেটা ফریم প্রিন্ট করি।

উপসংহার

এই টিউটোরিয়ালে, আমরা আমাদের ডেটা ফ্রেমের রো র‍‍্যাঙ্ক করেছি এবং তারপর pandas লাইব্রেরি এবং এর বিল্ট-ইন ফাংশন ব্যবহার করে ডেটা প্রিন্ট করেছি। Pandas dataframe-এ রো র‍‍্যাঙ্কিং একটি সহজ প্রক্রিয়া, কিন্তু আপনাকে উপরের পদ্ধতিটি সঠিকভাবে ফলো করতে হবে।

  1. পাইথন পান্ডাসে eval() ফাংশন ব্যবহার করে রোয়ের যোগফল নির্ণয়

  2. পাইথন পান্ডাসে শর্তভিত্তিক সাবসেট রো সিলেক্ট করা

  3. পান্ডাস ডেটাফ্রেম থেকে MultiIndex তৈরি করা

  4. পান্ডাস ডেটাফ্রেম থেকে নাল সারি ড্রপ করা (dropna)