در حال بارگزاری

تابع Counter در پایتون (Python) + فیلم و مثال

شما اینجا هستید:
تابع Counter در پایتون (Python) + فیلم و مثال

تابع Counter در پایتون (Python) + فیلم و مثال

در این مطلب بنا داریم تا به صورت جامع و از صفر، تابع Counter رو در collection پایتون (python) آموزش بدیم! این تابع برای شمارش تعداد عناصر یک لیست/تاپل و … مورد استفاده قرار می‌گیرد!

دانلود فیلم آموزشی

دانلود فیلم (حجم: )(مدت زمان: ) به زودی… نهایتاً تا 10 تیرماه 1398

مقدمه

لیست a رو به صورت زیر در نظر بگیرید!

a=["A","B","A","B","A","B","C","A","C","B","A","A"]

حالا فرض کنید می‌خوایم ببینیم، هر کدوووم از حروف A و B و C چقدر تکرار شدن!

مثلاً اگر بشمارید می‌بینید که حرف A، شش بار، B چهار بار و C دوبار تکرار شده است!

اما قبول دارید که اگر لیست بزرگ‌تر بشه و مولفه‌های بیشتری داشته باشه، دیگه نمی‌تونیم به صورت دستی بشماریم!؟ (قطعاً باید بگید: بله قبول دارم!)

خب برای این کار میایم از Counter استفاده می‌کنیم!

یه مثال دیگه هم بزنم که به شخصه برای خودم اتفاق افتاده! در دیتابیس یک شرکت هواپیمایی، می‌خواستیم با یک مدل سری زمانی تقاضای این شرکت رو پیش‌بینی کنیم! در این تحلیل نیاز بود که دو مُد اول یک ستونی از داده‌های این دیتابیس رو بدوونیم!

یادآوری: «مُد» میشه داده‌ای با بیشترین فراوانی در یک مجموعه داده!

شاید بگید: خب کاری نداره! چه کاریه اصلا! با اکسل به اون سادگی میشه حساب کرد! ولی جواب اینه که این دیتاست (که معمولا در واقعیت اینجوری است و تازه فقط داده‌های دو سال اون شرکت هواپیمایی رو داشت!) انقدر بزرگ بود که اکسل حتی قادر به خوندن و نمایش همه‌ی داده‌ها نبود! و همون اول پیغام می‌داد که همه‌ی داده‌ها به صورت کامل لود نشد!

اینجا پایتون (Python) ناجی ما بود و یکی از راه‌های ساده استفاده از همین Counter است!

مثال 1

کد زیر رو در نظر بگیرید، تا در ادمه توضیح بدم!

from collections import Counter
a=["A","B","A","B","A","B","C","A","C","B","A","A"]
b=Counter(a)
print(b)

خب! در خط 1 از پکیج collections اومدیم Counter رو import کردیم (یعنی وارد برنامه کردیم!)

در خط 2 همون لیستی رو آوردیم که در ابتدای این آموزش در موردش صحبت کردیم! که می‌خوایم تعداد هر کدوووم از A و B و C ها رو در اووون بِشماریم!

در خط 3، گفتیم آقایِ پایتون (Python) لطف کن Counter لیست a رو در متغیری به اسم b ذخیره کن! [که Counter برای همین شمردن تعداد که مدنظر ما هم هست استفاده میشه!]

در خط 4 هم که گفتیم همون b رو واسمون چاپ کن! همین!

حالا بذارید خروجی رو براتون بیارم تا کمی بیشتر صحبت کنیم!

خروجی میشه:

Counter({'A': 6, 'B': 4, 'C': 2})

که یعنی داره میگه:

A به تعداد 6 بار

B به تعداد 4 بار

C به تعداد 2 بار

تکرار شده است!

در ضمن یه نکته: همینطور که مشاهده می‌کنید، خروجی ما چیزی شبیه یک دیکشنری است!

مطلب پیشنهادی:

دیکشنری در پایتون چیست؟

مثال 2

این بار بریم سراغ همون مثال شرکت هواپیمایی که در بخش مقدمه در موردش صحبت کردم! البته در زیر برای اهداف آموزشی، تعداد داده‌ها کم است!

بازهم نیاز تا قطعه کد زیر رو در نظر بگیرید، تا در ادامه در مورد موارد دیگه صحبت کنیم!

from collections import Counter
a=[69,12,70,45,70,69,80,70,32,70,70,69]
b=Counter(a)
print(b)

خط 1 که مشابه قبله! در خط 2 اومدیم یک لیست تعریف کردیم، منتهی این بار فقط لیستی از اعداد است! و هدف اینه که بشماریم و ببینیم هر عدد چندبار در این لیست چندبار تکرار شده!

خط 3 و 4 هم مشابه مثال 1 است!

خروجی میشه!:

Counter({70: 5, 69: 3, 12: 1, 45: 1, 80: 1, 32: 1})

یعنی میگه:

70 به تعداد 5 بار

69 به تعداد 3 بار

و …الی آخر… تکرار شده اند!

پس اینجوری می‌تونیم بگیم، مُد اول و دوم به ترتیب 70 و 69 است! (اینکه مُد چیست رو در بخش مقدمه همین مطلب، بحث کردیم!)

چند نکته

1- کد زیر رو در نظر بگیرید!

from collections import Counter
a=[69,12,70,45,70,69,80,70,32,70,70,69]
b=Counter(a)
print(b[70])

خروجی میشه: 5

همه‌ی کد بالا که شبیه قبلاً است! فقط در خط 4 گفتیم، b[70] رو چاپ کن! که یعنی داریم از پایتون (Python) می‌پرسیم که 70 چندبار تکرار شده؟! اون بنده خدا هم در خروجی برای ما عدد 5 رو چاپ میکنه! یعنی پنج بار تکرار شده!

یا مثلاً اگر در مثال 1 در خط 4 بگیم:

print(b["B"])

بهمون خروجی میده: 4 ! یعنی B به تعداد 4 بار در لیست مثال 1 تکرار شده است!

2- فرض کنید در لیست مثال شماره 2، فقط می‌خوایم ببینیم کدوم دوتا عدد هستن که بیشترین تکرار رو دارن!؟! در این صورت می‌تونیم بنویسیم:

from collections import Counter
a=[69,12,70,45,70,69,80,70,32,70,70,69]
b=Counter(a)
print(b.most_common(2))

که در خط 4 داریم میگیم، most_common ها (به معنی پرتکرارهای b رو نشون بده! منتهی توووی پرانتز میگیم فقط دوتاش رو! یعنی دوتا از پرتکرار ترینها رو!)

که خروجی به صورت زیر میده!

[(70, 5), (69, 3)]

که یعنی:

“یه 70 داریم که 5 بار تکرار شده!”

و “یه 69 داریم که 3 بار تکرار شده!”

تمرین همینجوری!

واسه اینکه با مفاهیم قبلی که یاد گرفتید، یکم بازی کنیم و هِی بیشتر تووی ذهنتون تثبیت بشه! به دو سوال زیر جواب بدید! [توجه کنید که دو سوال زیر هیچ ربطی به این آموزش نداره و فقط محض یادآوری برای دوستانی است که آموزش های قبلی ما رو هم دنبال کردن! همین!]

مجدداً خروجی زیر رو در نظر بگیرید! (که یکم بالاتر پایتون (Python) بهموووون داد!)

[(70, 5), (69, 3)]

الف) به نظرتون نوع خروجی داده شده چیست؟! (لیست؟ تاپل؟ دیکشنری؟)

ب) به نظرتون نوع مولفه اول و دوم خروجی داده شده چیست؟! (لیست؟ تاپل؟ دیکشنری؟)

راهنمایی: برای جواب دادن به هر کدوم از دو سوال بالا، کافیه type هر کدوم رو فراخوانی کنید!

جواب آخر!:

الف) لیست ب) تاپل!

مطالب پیشنهادی:

آموزش تاپل (tuple) در پایتون (Python)

آموزش لیست (list) در پایتون (Python)

اگر سوالی دارید، ما در خدمتیم!

هر چند سعی کردم آموزش کاملی بدم، اما اگر هرجای این مطلب رو نفهمیدید، خوشحال میشم بپرسید و همچنین خوشحال میشم نظرتون و نقدتون رو درباره این مطلبموون بدونم! تا ان شاء الله در پست‌های آتی بهبودش بدیم!

مطالب مرتبط

آموزش numpy - تابع arange در پایتون (python) تابع arange یکی از پرکاربردترین تابع های مورد استفاده در...

آموزش تولید اعداد تصادفی در پایتون (Python) در این مطلب، به طور بی‌نهایت کامل تولید عدد تصادفی (random)...

جزئیات نوشته
تعداد دیدگاه 6
تعداد بازدید 22.0K
تاریخ انتشار 22/06/2019
تاریخ بروزرسانی 22/06/2019
نویسنده گروه آموزشی کولاک
برای ارسال دیدگاه ابتداواردشوید