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

পাইথনে Counter ব্যবহার করে সিকোয়েন্সে সবচেয়ে বেশি আবির্ভূত আইটেম খুঁজে বের করা

সমস্যা

একটি সিকোয়েন্সে (লিস্ট, স্ট্রিং ইত্যাদি) কোন আইটেমগুলো সবচেয়ে বেশি বার আবির্ভূত হয়েছে তা খুঁজে বের করা।

সমাধান: collections.Counter

Counter হলো একটি ডিকশনারি সাবক্লাস যা প্রতিটি কী-এর জন্য ইন্টিজার কাউন্ট রাখে। মিসিং কী খোঁজলে ডিকশনারির মতো KeyError না দিয়ে ০ রিটার্ন করে। এটি ডেটা অ্যানালিসিসের জন্য অত্যন্ত উপকারী।

from collections import Counter

# খালি কাউন্টার
c = Counter()
c['mystring']  # 0 রিটার্ন করে (এরর না)
c['mystring'] += 1
print(c)  # Counter({'mystring': 1})

সিকোয়েন্স থেকে ফ্রিকোয়েন্সি গণনা

লিস্ট বা স্ট্রিং দিয়ে সরাসরি কাউন্টার তৈরি করা যায়।

text = 'Peas porridge hot peas porridge cold peas porridge in the pot nine days old'
count = Counter(text.split())
print(count)
# Counter({'porridge': 3, 'peas': 2, 'Peas': 1, 'hot': 1, ...})

most_common() মেথড

সবচেয়ে বেশি ফ্রিকোয়েন্সি वाले আইটেমগুলো পাওয়ার জন্য।

count.most_common(1)  # [('porridge', 3)]
count.most_common(2)  # [('porridge', 3), ('peas', 2)]
count.most_common(3)  # [('porridge', 3), ('peas', 2), ('Peas', 1)]

কাউন্টার গাণিতিক অপারেশন

দুটি কাউন্টার যোগ, বিয়োগ, ইন্টারসেকশন ইত্যাদি করা যায়।

a = Counter(text.split())
b = Counter('Peas peas hot peas peas peas cold peas'.split())

a + b  # কাউন্ট যোগ
a - b  # কাউন্ট বিয়োগ (নেগেটিভ বা শূন্য হলে বাদ)

অন্যান্য উপকারী মেথড

  • elements(): সব এলিমেন্ট রিপিট করে ইটারেটর রিটার্ন করে।
  • values(): শুধু কাউন্টগুলো।
  • items(): (এলিমেন্ট, কাউন্ট) টাপলের লিস্ট।

Counter মাল্টিসেট (multiset) আচরণ করে এবং ডেটা খুব দক্ষতার সাথে স্টোর করে।

  1. Bokeh (Python)-এ ইমেজ নিয়ে কাজ করার পদ্ধতি

  2. পাইথনে API রেজাল্ট ভিজ্যুয়ালাইজ করার টিউটোরিয়াল

  3. পাইথনে সর্বোচ্চ পানির কন্টেইনার

  4. পাইথনে স্ট্রিং এবং সংখ্যা কনক্যাটেনেট করা