با داده‌ها چه می‌توان کرد؟ 11 - کار با پانداز - 2

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

در قسمت گذشته تا به آنجا رسیدیم که سلولهای خالی و یا حاوی NaN را می شود با ()fillna پر کرد.
قسمت جدید را با یک مثال جدید شروع کنیم. همیشه برای کار با پانداز باید آنرا وارد و اجرا کرد. در اینجا یک دیتافِریم DataFrame ایجاد می کنیم که داده های آن توسط نام پای NumPy تغذیه شده باشد. ابتدا احتیاج داریم که نام پای را هم وارد کنیم.
import pandas as pd
import numpy as np
در این مثال، (np.arange(16).reshape((4, 4 نام پای 16 عدد (از صفر تا 15) را بوجود می آورد و در چهار ردیف و چهار ستون شکل می دهد. همچنین بخاطر داریم که index معرف ردیف و columns معرف ستون است.
با قابلیت ()drop می شود یک یا چند ردیف و همچنین یک ستون یا چند ستون را حذف کرد:

همانطور که ملاحظه می کنید، برای حذف ستون از axis=1 یا 'axis='columns استفاده شده است.

به این مثال زیر توجه کنید. ابتدا داده های کوچکتر از 5 را با یک عمل ساده می توان مشخص کرد. True نمایانگر این است که عدد کوچکتر از 5 است و False خلاف آنرا ثابت می کند. سپس همه آنهاییکه کوچکتر از 5 هستند را مبدل به صفر یا هر عددی که می خواهیم، می کنیم.
در اینجا از متد نام پای استفاده کرده و همه منفی ها را با abs مبدل به مثبت می کنیم. در محاسباتی که اعداد منفی اختلال ایجاد می کنند، می شود از این متد استفاده کرد:
در پانداز می توان فانکشن های پایتون را بکار گرفت. اگر بخاطر داشته باشید در قسمت پایتون به lambda اشاره کردیم که فانکشنی کوتاه و یک خطی بود. به مثال زیر توجه کنید:
در این مثال ابتدا ما فانکشن لمبدا را اجرا می کنیم و سپس آنرا بر روی کل دیتافِریم بکار می بریم. در هر ستون بزرگترین عدد منهای کوچکترین عدد می شود. یعنی در ستون اول 12 - (1-) می شود 13 و الی آخر. توجه کنید که این عمل ریاضی بر روی اعداد در ستون اجرا می شود و نه ردیف.
استفاده از axis=1 یا 'axis='columns همین عمل را برای ردیف انجام می دهد.

اینهم یک مثال دیگر که با یک فانکشن دیگر نه تنها اعداد صحیح int را به اعشار float تبدیل کرد بلکه تعداد اعدادی را که بعد از ممیز می آیند، تعیین کرد.


با این متد می شود ردیف یا ستون را از کوچک به بزرگ جور (مرتب) کرد:
به این دیتافِریم توجه کنید:
با متد ()rank می توان جایگاه داده ها را از کوچک به بزرگ در هر ردیف را مشخص کرد:


انجام عملیات ساده آماری بر روی دیتافِریم DataFrame
به دیتافِریم زیر توجه کنید:
این یک دیتافِریم چهار در دو است که در بعضی از سلولها، داده ای وجود ندارد. تمامی عملهای ریاضی با انضمام معدل بر روی ردیف و ستونها قابل محاسبه است. مثل جمع و تفریق:
 
یا میانگین (معدل)
describe یکی از اولین اعمالی است که بر روی داده ها انجام می شود.
کمی به عمق برویم. پانداز دارای قابلیتهای بسیار زیادی است که ما حتی سطح آنرا خراش نداده ایم. در اینجا به قابلیت دریافت و خواندن داده ها از منابع دیگر (بازار سهام در بورس نیویورک از یاهو Yahoo) نگاه کوچکی می کنیم. به مثال زیر توجه کنید:

ابتدا ما یکی از بسته های قابل استفاده برای خواندن داده از منابع اینترنتی را وارد پانداز می کنیم. سپس سمبلهای کمپانی ها(اپل، توییتر، فیسبوک و گوگل) را مشخص کرده و سپس قیمت هر کدام را و تعدادی که در هر روز خرید و فروش شده اند را درخواست می کنیم.
با ()price.pct_change ما درصد تغییر روزانه هر سهام (در پایان روز که بسته می شود) را جستجو می کنیم و آنرا در returns ذخیره می کنیم. tail پنچ روز آخر یا پنچ داده نهایی فهرست ما را نشان می دهد.

اکنون با داده هایی که داریم، عمل آماری correlation که ارتباط بین دو متغیر را برملا می کند (یا نشان می دهد که ارتباطی وجود ندارد) را انجام می دهیم.
در این مثال ما بدنبال ارتباط قیمت سهام فیسبوک و گوگل هستیم. می خواهیم بدانیم که آیا تغییر در قیمت سهام یکی از آنها بر روی دیگری تاثیر دارد یا نه؟ عددی که در اینجا بدست آمده است حدودا 0.69 است. آیا این عدد معنی و مفهوم خاصی دارد؟ در قسمتهای آینده ما بیشتر بر روی تحلیل آماری نتایج تامل خواهیم کرد اما بطور اختصار، ارتباط یا correlation عددی است بین 1.0- تا 1.0+.
هر چه که عدد بدست آمده نزدیکتر به 1- و 1+ باشد، ارتباط میان دو متغیر بیشتر است و اگر به 0 نزدیکتر باشد، نشاندهنده این است که ارتباطی میان دو متغیر موجود نیست. همچنین اگر عدد مثبت باشد به معنای آنست که تغییر در یکی در سمت و سوی تغییر در دیگری است و عدد منفی به معنای ارتباط معکوس است.

ذکر یک نکته در اینجا بسیار اهمیت دارد و آن اینست که نرم افزار پانداز صرفنظر از اینکه چه داده هایی به آن داده می شود، محاسبه را انجام می دهد. این ما هستیم که باید ببینیم که در عالم واقعیت، آیا داده های مربوط به دو متغیر اساسا ارتباطی با هم دارند یا نه؟ در مثال بالا، از آنچاییکه هر دو کمپانی در Nasdaq هستند و هر دو بیشتر درآمدشان از فروش تبلیغات است، ممکن است که نتیجه حاصله معنی وجود ارتباط باشد.

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


در این مثال نقطه تقاطع ردیف با ستون نشاندهنده ارتباط بین دو متغیر است. (دوباره تاکید می شود که این تنها محاسبه پانداز بر اساس داده هاست و ما هستیم که تحلیلگر اصلی خواهیم بود.)
مثلا نقطه تقاطع توییتر در ردیف با توییتر در ستون، عدد 1 است. اما توییتر با فیسبوک 0.38 است.

پانداز همچنین می تواند ارتباط و تاثیر گذاری چند متغیر را با یک متغیر ارائه دهد:

ادامه دارد

- اطلاعات مربوط به این بخش و قسمتهای آینده در باره پانداز، بیشتر برگفته از کتاب  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 و کلاسهای ارائه شده آنلاین توسط دانشگاه هاروارد است.


**- استفاده از این سلسله مطالب با ذکر منبع آزاد است.










Comments

Popular posts from this blog

با داده‌ها چه می‌توان کرد؟ 9 - پردازش خطی بصورت عملی

با داده‌ها چه می‌توان کرد؟ 12 - کار با پانداز - 3 چگونه داده‌ها را وارد کنیم؟