ترفندهای پایتون برای ردگیری داده ها — به زبان ساده
در پروژههای علوم داده گاهی لازم میشود که رد اطلاعات را در دادهها بگیریم یا نوعی انعطافپذیری برای بهروزرسانی ورودی جدید دادهها به سرعت و سهولت داشته باشیم. دانستن شیوه استفاده از برخی اشیای دادهای پایتون موجب میشود که در این زمینه سازمانیافتهتر عمل کنیم و از بروز اشتباهاً در زمان کار با حجم بالایی از دادهها در حوزه علم داده جلوگیری نماییم. در این مقاله با برخی ترفندهای پایتون برای ردگیری داده ها آشنا خواهیم شد که شامل فهرست زیر میشوند:
- ردگیری اندیس در زمان تکرار حلقه
- بهروزرسانی آیتمهای دیکشنری جدید
- ضبط اطلاعات جدید با شیئی که قابلیت استفاده مجدد دارد
کار خود را با معرفی برخی مسائل آغاز میکنیم و سپس به جزییات شیوه حل آنها با ابزارهای پایتون میپردازیم. امیدواریم این رویکرد به بصریسازی مواردی که این ابزارهای میتوانند در کد مورد استفاده قرار گیرند کمک کند.
ردگیری اندیس در زمان تکرار حلقه
فرض کنید لیستی از اسامی دوستان دارید. میخواهید یک حلقه روی لیست اجرا کنید و در عین حال اندیس آیتمها را نیز ردگیری کنید برای انجام این کار میتوانید به آسانی از enumerate کمک بگیرید:
1>>> friends = ['Ben', 'Kate', 'Thinh']
2>>> for i, item in enumerate(friends):
3>>> print(f'{i}: {item}')
40: Ben
51: Kate
62: Thinh
یا این که میتوانید از «خلاصهسازی دیکشنری» (dictionary comprehension) کمک بگیرید:
1>>> {i: friends[i] for i in range(len(friends))}
2{0: 'Ben', 1: 'Kate', 2: 'Thinh'}
بهروزرسانی آیتمهای دیکشنری جدید
فرض کنید از یک دیکشنری برای ردگیری کلمات و تعدادشان در جمله نخست یک متن استفاده میکنید:
1sent1 = {'love': 1, 'hate': 3}
اما زمانی که به جمله دوم میرسید، میخواهید دیکشنری قبلی را با جمله جدید بهروزرسانی کنید:
1sent2 = {'love': 2, 'flower': 1}
بنابراین کیسه بهروزرسانی شده کلمات به صورت زیر درمیآید:
1{'love': 3, 'hate': 3, 'flower': 1}
بهتر است ابزارهایی داشته باشیم که به ما امکان میدهند این کار را به آسانی انجام دهیم. به این منظور میتوانید از collections.Counter کمک بگیرید. کلاس collections.Counter امکان میدهد که عنصر یک مجموعه بیش از یک عدد باشند.
1from collections import Counter
2bag_words = Counter()
3sent1 = {'love': 1, 'hate': 3}
4bag_words.update(sent1)
5sent2 = {'love': 2, 'flower': 1}
6bag_words.update(sent2)
7bag_words
خروجی کد فوق به صورت زیر است:
1Counter({'love': 3, 'hate': 3, 'flower': 1})
اکنون میتوانید به سهولت «کیسه کلمات» (bag of words) را بهروزرسانی کرده و اطلاعاتی بیشتری از جملههای دیگر گردآوری کنید. برای یافتن تعداد کلمات یکتا در جمله میتوان از len استفاده کرد:
1>>> len(bag_words)
23
همچنین میتوانید کل کلمات را در جمله بیابید. به این منظور از sum استفاده کنید:
1>>> sum(bag_words.values())
27
تعریف کردن اشیای دارای قابلیت استفاده مجدد با Namedtuple
فرض کنید میخواهید رد لیستی از اطلاعات در مورد دوستان را بگیرید تا یک جشن تولد را آماده کنید. از آنجا که هم اینک به این اطلاعات دسترسی ندارید، ابتدا باید یک place holder where ایجاد کنید تا بتوانید اطلاعات را بعداً وارد نمایید. اگر میخواهید تاریخ تولد Kate، غذای مورد علاقه، رنگ محبوب و خصوصیتهای روانشناختی را ذخیره کنید، باید به صورت زیر عمل کنید:
1>>> Kate = Friend('Feb', 'cake', 'pink', True)
همچنین زمانی که تاریخ تولید کیت را به خاطر نیاورید میتوانید به صورت زیر عمل کنید:
1>>> Kate.birthday
2'Feb'
این شیء کلاس در پایتون به شما امکان میدهد که وهلهای از Kate ایجاد کنید، اما ممکن است متوجه شوید که ایجاد یک کلاس Friend برای نگهداری اطلاعات ساده ممکن است کاری زمانگیر باشد. اگر چنین باشد، میتوانید از تابع namedtuple استفاده کنید. امکان تعریف یک شیء با قابلیت استفاده مجدد را برای رکوردها میدهد که با وجود آن مطمئن میشویم نامهای صحیحی برای فیلدهای خود استفاده میکنیم:
1from collections import namedtuple
2Friend = namedtuple('Friend' , 'birthday food color introvert')
3Kate = Friend('Feb', 'cake', 'pink', True)
4Ben = Friend('Jan', 'fish', 'red', False)
برای نمایش اطلاعات در مورد کیت به صورت زیر عمل میکنیم:
1>>> Kate
2Friend(birthday='Feb', food='cake', color='pink', introvert=True)
اگر بخواهیم بدانیم آیا Ben درونگرا یا برونگرا است، میتوانیم از کد زیر استفاده کنیم:
1>>> Ben.introvert
2False
سخن پایانی
در این مقاله با شیوه ردگیری اطلاعات با استفاده از enumerate، خلاصهسازی مجموعه، Counter و nametuples آشنا شدیم. امیدواریم این راهنما اطلاعات مفیدی در مورد ابزارهای علوم داده در اختیار شما قرار داده باشد.
اگر این مطلب برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای برنامهنویسی پایتون Python
- مجموعه آموزشهای برنامهنویسی
- گنجینه آموزش های برنامه نویسی پایتون (Python)
- زبان برنامه نویسی پایتون (Python) — از صفر تا صد
- برنامه نویسی وب با پایتون — راهنمای کاربردی
==