সমস্যা বিবরণ
একটি সিরিজ দেওয়া আছে যাতে কিছু সংখ্যা বারবার রিপিট হয়েছে। লক্ষ্য হলো সবচেয়ে বেশি ফ্রিকোয়েন্সি (mode) والی এলিমেন্টটি খুঁজে বের করা।
ইনপুট সিরিজ
0 1
1 2
2 3
3 2
4 3
5 3
6 3
7 4
8 4
9 2
সমাধানের পদ্ধতি (functools.reduce ব্যবহার করে)
- সিরিজ তৈরি করুন।
- functools.reduce ও ল্যাম্বডা ফাংশন ব্যবহার করে প্রতিটি ইউনিক ভ্যালুর ফ্রিকোয়েন্সি তুলনা করুন।
- সর্বোচ্চ ফ্রিকোয়েন্সি वाली ভ্যালু রিটার্ন করুন।
import pandas as pd
import functools as ft
l = [1,2,3,2,3,3,3,4,4,2]
data = pd.Series(l)
most_repeated = ft.reduce(
lambda x, y: x if len(data[data == x]) > len(data[data == y]) else y,
data
)
print("সর্বোচ্চ পুনরাবৃত্ত এলিমেন্ট:", most_repeated)
আউটপুট
সর্বোচ্চ পুনরাবৃত্ত এলিমেন্ট: 3
বিকল্প পদ্ধতি (প্যান্ডাস বিল্ট-ইন mode() - সুপারিশ করা)
import pandas as pd
data = pd.Series([1,2,3,2,3,3,3,4,4,2])
mode_val = data.mode()
print("Mode (সর্বোচ্চ ফ্রিকোয়েন্সি):", mode_val.iloc[0] if not mode_val.empty else "None")
আউটপুট
Mode (সর্বোচ্চ ফ্রিকোয়েন্সি): 3
নোট: mode() একাধিক মোড থাকলে সবগুলো রিটার্ন করে (যেমন [2,3] যদি দুটোই ৪ বার করে থাকে)। value_counts().idxmax()ও ব্যবহার করা যায়।