با دادهها چه میتوان کرد؟ 4 - Python Pandas
Python Pandas |
در این قسمت با استفاده از پانداز به صورت فشرده به زبان پایتون می پردازیم. از این طریق می توانیم همزمان با هر دو آشنایی پیدا کنیم. توجه داشته باشیم که در اینجا قصد آموزش کامل زبان پایتون را نداریم. این تنها برای یادآوری برخی از عملکردهای این زبان جالب است که زیر بنای بسیاری از نرم افزارها و رشته های مختلف در علم داده هاست.
قبل از هر چیز همانگونه که در قسمت گذشته نشان دادم، صفحه پانداز را از طریق اناکوندا بر روی مرورگرتان Browser فعال کنید. یک روش سریعتر و آسانتر دیگر در ویندوز 10 اینست که در قسمت جستجوی ویندوز (پایین/چپ) کلمه Jupyter Notbook را بنویسید. و سپس بر روی ژوپیتر کلیک کنید. صفحه مرورگر پانداز به همراه prompt ژوپیتر (سیاه رنگ که نقش سرور را بازی می کند) باز می شود. توجه داشته باشید که فایلها روی صفحه شما با آنچه که در عکس زیر می بینید، متفاوت و طولانی تر است. با کلیک روی پوشه ای که در قسمت قبل (احتمالا در Desktop تان) درست کردید، بروید.
در قسمت بالا/راست، بر روی New بروید و در منو بر روی Python3 کلیک کنید. این عمل باعث می شود که یک صفحه جدید با یک Input box باز شود.
پیش از شروع چند بار بر روی علامت بعلاوه + در منوی بالا کلیک کنید تا چندین باکس (سلول) ایجاد شود. میانبر این کار Alt+Enter است. همچنین زمان اجرا کردن هر کد در هر کدام از این سلولها اگر Shift + Enter را همزمان فشار دهید، علاوه بر اجرای کد در آن سلول، یک سلول دیگر در زیر آن ایجاد می شود.
پایتون
کامنت comment: این علامت # برای گذاشتن کامنت در پایتون است بدون آنکه کد اجرا شود. بطور مثال همانطور که در قسمت گذشته ذکر شد، پایتون و اصولا هر زبان دیگر کامپیوتری می تواند همه عملیات ریاضی را انجام دهد. مثلا اگر در سلول بنویسید 2 + 2 و با گرفتن کلید شیفت، ورود را بزنید Shift+ Enter، با جواب 4 در زیر آن روبرو می شوید. اما اگر علامت # را در ابتدای جمله بیاورید، هیچ عملی صورت نمی گیرد. علامت # برای نوشتن کامنت برای توضیح کدهایی که در خطوط بعدی خواهید نوشت بکار می رود.
جنس داده ها data در پایتون با یکدیگر متفاوت است. نوع اعداد صحیح integer با اعشاری float فرق می کند. اگر یکی از اعداد در چهار عمل اصلی ریاضی، اعشاری باشد، پاسخ اعشاری خواهد بود، حتی اگر بعد از نقطه (ممیز) از صفر استفاده شود. اگر هر دو عدد صحیح باشد، پاسخ هم صحیح خواهد بود.
4 / 2 = 2
2.0 + 2 = 4.0
اگر هر داده ای بین دو گیومه "" یا ' ' قرار گیرد به مثابه String محسوب می شود، حال چه لغت باشد و چه عدد.
در پایتون می توان به نوع data با این متد پی برد ( )type
یک نوع دیگر data در پایتون، دوگانه Boolean است که با True و False نشان داده می شود.
استفاده از متغیرها variables در زبان برنامه نویسی به عنوان سنگ بنای چیدن کدها بر روی یکدیگر به حساب می آید. متغیر می تواند یک حرف و یا یک کلمه که قابلیت توضیح دادن آنچه که به آن منتسب می شود، باشد. مثلا:
a = 42
از این پس، a ارزش 42 را خواهد داشت.
همینطور ارزش string نیز به همین طریق به یک متغیر ارجاع داده شده و در آن ذخیره می شود:
name = 'Sara'
علامت برخی از عملیتهای قابل اجرا بر روی داده ها: علاوه بر چهار عمل اصلی ریاضی، در پایتون علائم دیگری نیز وجود دارد که مصارف خاص خود را دارند. دو علامت مساوی در کنار هم تعیین می کند که آیا دو طرف با یکدیگر برابر هستند؟ بنابراین، استفاده از یکی از این علامتها (=) صرفا به عنوان ذخیره کردن مثلا عدد 42 در متغیر a است.
این علامت =! یعنی مساوی نیست. علامتهای < بزرگتر و > کوچکتر نیز خود گویا هستند. این علامت =< یعنی بزرگتر و یا مساوی، و => به معنی کوچکتر و یا مساوی است.
مجموعه چند داده data در یک گروه. در پایتون چند گروه از داده ها در یک قالب وجود دارد که بخصوص برای کارکرد در علم داده ها بسیار مهم است. فهرست یا لیست یا list بیشترین استفاده را در پانداز دارد. لیست داده ها درون دو کروشه [ ] قرار می گیرند و با ویرگول از هم جدا می شوند.
لیست داده ها می تواد مرکب از عدد باشند و یا string
جایگاه (موقعیت) هر data درون لیست مهم است و از صفر شروع می شود. تعداد اقلام درون یک لیست با ( )len معین می شود.
string خود یک لیستی از حروف محسوب می شود اما چون درون کروشه نیستند، فقط می شود جایگاه حروف را مشخص کرد و بُرش داد ولی برعکس لیست اقلام آن قابل تغییر نیستند.
string را می توان بُرش Slice داد.
توجه داشته باشید که چهارمین حرف شامل نتیجه برش نمی شود.
پایتون کارکردهایی از قبل تعبیه شده درون خود دارد. به این مثال توجه کنید که این متدهای موجود در پایتون چطور حروف را بزرگ، کوچک، بزرگ کردن اولین حرف، تعیین کردن اینکه آیا داده مزبور عدد است یا string، و یا تمیز کردن فضای اضافی در اطراف string می کند.
هر کدام از اقلام درون لیست قابل تغییر هستند. به یاد داشته باشید وقتی درون کروشه قرار داشته باشند می شود تغییر کند. همچنین می شود string را به لیست تغییر داد.
کارکردهای بسیار زیاد دیگری در مورد لیست قابل ذکر است که در اینجا برای طولانی شدن، از آنها صرفنظر می کنیم. مثلا می شود چند قلم را یکجا به لیست افزود یا آنهایی که موجودند را حذف کرد.
نوع دیگر مجموعه داده ها در یک گروه، دیکشنری Dictionary است. شاخص دیکشنری {} است که اقلام بصورت جفت در درون آن بصورت کلید و ارزش value قرار می گیرند و با ویرگول از هم جدا می شوند.
برای تبدیل لیست به دیکشنری از این متد استفاده می کنیم:
فانکشن function قطعه کدهایی هستند که به منظور محاسبه و یا تولید چیزی برای یکبار نوشته می شوند و به کرات می شود از آنها در اپلیکیشن و یا محاسبات گوناگون استفاده کرد. یادگیری فانکشن ها بسیار در هر زبان برنامه نویسی مهم است. مثلا به این نگاه کنید:
برای بوجود آوردن فانکشن در پایتون از کلمه def استفاده می شود. لغت بعد از آن کلمه انتخابی است که بعدها به کرات می شود از آن با پارامترهای مختلف استفاده کرد. این لغت بهتر است طوری انتخاب شود که گویای فانکشن باشد. سپس در پرانتز، یک پارامتر قرار می گیرد که معرف یک ارزش، (عدد و یا string،) خواهد بود. در اینجا به جای دما به سانتیگراد است که در فانکشن بنا بر دماهای مختلف، دمای فارنهایت متناسب را محاسبه می کند. دما به سانتیگراد ضربدر 1.8 و بعلاوه 32، به فارنهایت تبدیل می شود.
در خط آخر، کلمه return محصول نهایی را بیرون می دهد. بعد از نوشتن یا ساختن فانکشن، برای استفاده از آن در دفعات مختلف فقط نام فانکشن را می نویسیم و در پرانتز، دما به سانتیگراد را که می خواهیم به فارنهایت محاسبه شود، قید می کنیم. می بینید که برای محاسبه دوباره یک دمای (عدد) دیگر، احتیاج به نوشتن همه این عملیات نیست و تنها با ذکر نام فانکشن و با گذاشتن دما عدد به سانتیگراد در پرانتز جلوی آن، براحتی دمای فارنهایت محاسبه می شود. گاهی یک فانکشن ممکن است بسیار طولانی باشد.
ظاهرا پانداز با لغات فارسی مشکلی ندارد و می تواند با آن کنار بیاید. توجه داشته باشیم که کلماتی که مخصوص پایتون است و از قبل در آن تعریف شده اند (مانند def یا return ) شامل این قضیه نمی شوند.
دوباره تاکید می کنم که هدف اصلی ما دستیابی به داده ها و اجرای الگوریتمهایی بر روی آنها و بدست آوردن نتیجه و پیش بینی است. بسیاری از فانکشنها در علم داده ها پیشاپیش نوشته شده و در دسترس هستند. اما باید حداقلها در زبان برنامه نویسی (در اینجا پایتون) را دانست و فهمید.
در شماره آینده برای تنوع، به مفهوم علم آمار برای بکارگیری درعلم داده ها می پردازیم. در قسمتهای بعد از آن دوباره بسراغ پایتون می آییم و با هم به سراغ استخراج داده ها از اینترنت به طریق کد نویسی درون ژوپتر نوتبوک که معرف نرم افزار پانداز است، می رویم.
این فایل را دانلود کنید و در پوشه pandas خود قرار دهید. از روی ژوپیتر نوتبوک روی این فایل رفته و آنرا باز کنید. این فایل حاوی بیشتر مطالبی است که در این قسمت راجع به آنها صحبت شده است. توجه داشته باشید که در مورد فانکشن، اول باید آنرا اجرا کنید و سپس می توانید از فانکشن در خط بعد با قرار دادن عدد جدید، از آن استفاده کنید.
- اطلاعات مربوط به این بخش و قسمتهای آینده در باره پانداز، بیشتر برگفته از کتاب Python for Data Analysis, Data Wrangling with Pandas, NumPy,and IPython چاپ دوم از انتشارات اورایلی است که توسط Wes McKinney، خالق پانداز، نوشته شده است.
*- بیشتر ملاتها در مورد بررسی آماری در این سلسله مطالب، برگرفته از دو کتاب An Introduction to Statistical Learning و The Elements of Statistical Learning Data Mining, Inference, and Prediction از انتشارات سپرینگر springer.com/us و کلاسهای ارائه شده آنلاین توسط دانشگاه هاروارد است.
**- استفاده از این سلسله مطالب با ذکر منبع آزاد است.
خیلی جالب است بسیار عالی
ReplyDelete