علی سطوتی
علی سطوتی
خواندن ۴ دقیقه·۴ سال پیش

خلاصه فصل اول - کتاب Python Data Science Handbook

مقدمه (اینجانب، نه مولف)

تصمیم گرفتم که وقتی این کتاب رو میخونم چیزهای جالبی که یاد میگیرم رو اینجا یادداشت کنم و به اشتراک بذارم تا همگی استفاده کنیم. همینجا عذرخواهی میکنم اگر یادداشت هام زیادی خلاصه وار هست، ولی هدف از این خلاصه نویسی صرفا آشنایی با دستورات و مفاهیم در حد عنوان اونها هست و همه ما برنامه نویس هستیم و جستجو کردن رو خوب بلدیم. برای همین فکر میکنم همینقدر کافی باشه. بریم که داشته باشیم:

ژوپیتر و IPython

این فصل در مورد IPython هست و تعدادی از دستورات کاربردی ژوپیتر. اگر تازه میخواید وارد دنیای دیتا ساینس بشید باید بگم که یکی از اولین کارهایی که باید بکنید این هست که jupyter رو نصب کنید و ژوپیتر کمک میکنه که کار خیلی آسون بشه. در ادامه با قابلیت های این برنامه آشنا میشیم.

در این قسمت مولف اشاره میکنه که یکی از مهمترین قابلیت های یک دانشمند داده اینه که جستجو رو بلد باشه. مثه همه ما وقتی که میخوایم مشکل کامپیوتری یکی از فامیل هامون که ازمون کمک خواستند رو حل کنیم. معمولا بحث دانش فنی ما در زمینه کامپیوتر نیست. بلکه برتری ما نسبت به اونها صرفا این هست که سرچ کردن رو بلدیم و مولف اشاره میکنه که توی دیتاساینس هم قضیه از همین قراره.

یافتن توضیحات توابع و کلاس ها در ژوپیتر

توی پایتون هر تابع و کلاس و متود یک توضیحات داره که نحوه صدا زدن اون تابع و خروجی هاشو مشخص میکنه. توی پایتون از تابع help برای دسترسی به توضیحات استفاده میکنیم اما ipython برای این کار یک میانبر گذاشته به این صورت که جلوی اون تابع یک علامت سوال میذاریم. به شکل زیر:

help( len)

یا

len?

دسترسی به سورس کد

توی ژوپیتر با دستور زیر میشه به سورس کد یک تابع دسترسی پیدا کرد:

len??

کامل کردن عبارت با استفاده از Tab

اگه کلید تب رو بفشارید بعد از وارد کردن قسمتی از عبارت مورد نظر، تعدادی پیشنهاد براتون لیست میشه. مثلا اگه یک نمونه از یک کلاس دارید و میخواید متودهایی که روی اون قابل صدا زدن هستند رو پیدا کنید کافیه به شکل زیر عمل کنید:

obj.<TAB>

این کاررو حتی در زمان import کردن ماژول ها هم میتونید انجام بدید مثلا :

import <TAB> import h<TAB>

بالاتر از کامل سازی با تب این هست که از کارت وحشی (یا wildcard :) ) استفاده کنید و اونوقت عبارتهای مطابق با اون کارت وحشی براتون لیست میشه: (به علامت ستاره توجه کنید. این یعنی چه کلماتی میتونیم به جای اون بذاریم تا عبارت قابل استفاده بشه. مثلا چه متغیرهایی هستند که آخرشون عبارت warning هست)

*Warning? str.*find*

عبارتهای جادویی

اجرای کد با عبارت زیر:

%run code.py

این کار براتون کدی که داخل اون فایل هست رو اجرا میکنه و به علاوه توابع و متغیرهایی که اونجا تعریف شدند توی محیط ژوپیتر هم تعریف میشن و میتونید استفاده کنید.

محاسبه زمان اجرای کد

%timeit L = [n**3 for n in range(1000)]

یک عبارت دیگه هم هست به شکل زیر که اطلاعات بیشتری رو در مورد زمان خروجی میده اما یه مقدار کندتر هست و انگار زمان سیستم عامل هم توش حساب میشه:

%time L.sort()

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

%prun tabee()

روش قشنگ تر برای این کار استفاده از روش زیر هست (این بار به جای اینکه شماره خطوط نشون داده بشن، توی جدول محتوای خطوط نشون داده خواهد شد که خوانا تر و قابل فهم تر هست.)

! pip install line_profiler %load_ext line_profiler %lprun -f tabee()

پروفایل کردن حافظه

اگه میخواید بدونید وضعیت کدتون از لحاظ اشغال حافظه چطوریه یا نه از روش زیر استفاده کنید:

! pip install memory_profiler %load_ext memory_profiler %memit tabee()

این تابع استفاده های جالب تری هم داره (مثل مشاهده پروفایل حافظه خط به خط کد) که میتونید برای خوندنش از داکیومنتیشن کمک بگیرید:

%memit?

لیستی از همه عبارات جادویی

%lsmagic

ورودی و خروجی

اگه میخاید خروجی رو چاپ نکنید کافیه ته عبارت از سمیکالن (;) استفاده کنید.

اجرای دستور شل در ژوپیتر

! ls
! pip install x

حتی جالب تر اینه که میتونید خروجی دستورات شل رو توی متغیرهای پایتون ذخیره کنید(!) :

files = !ls

و حتی میتونید متغیرهای پایتون رو به شل پاس بدید:

message = &quotshow me&quot !echo {message}

روش جالب برای دیباگ

وقتی کد خطا میگیره یک عبارت چاپ میشه که به اصطلاح همون Exception هست و تعدادی از خطوط برنامه که صدا زدن توابع تو در تو هستند نمایش داده میشه. حالا اگه بخواید راحت تر دیباگ کنید میتونید از روش زیر استفاده کنید:

%xmode Verbose

و بعد زیرش کدتون رو بنویسید. اتفاقی که میفته اینه که این بار اطلاعات بیشتری به شما نمایش داده میشه. مثلا متغیرها هم علاوه بر جریان برنامه نمایش داده میشن که میتونه برای دیباگ خیلی کمک کننده باشه.

یک دستور هم هست که برای دیباگ عمیق تر کاربرد داره و به شکل زیر هست:

%debug

این یک روش دیباگ اینترکتیو و تعاملی هست که شما میتونید قدم به قدم جلو برید تا به خطا برسید.

جمع بندی

امیدوارم دستورات این بخش براتون مفید بوده باشه. برای خودم که چند ساله پایتون کارم خیلیهاشون مفید بود. در بخش بعدی به بررسی پکیج نامپای میپردازیم. (میپردازد ;)

پایتونهوش مصنوعیعلم دادهژوپیتربرنامه نویسی
M. Sc. AI at Sharif University \n NLP Researcher
شاید از این پست‌ها خوشتان بیاید