با دادهها چه میتوان کرد؟ 13 - کار با پانداز - 4
کار با نرم افزار پانداز را ادامه می دهیم. در این قسمت به یکی از مهمترین شیوه های کار با جدول داده ها می پردازیم. همانگونه که از ابتدا توضیح دادم، هدف از بررسی داده ها تحلیل آنها در پیدا کردن ارتباط میان متغیرها و در نهایت نتیجه گیری و پیش بینی آینده با توجه به آنچه که در گذشته و تاکنون دیده و ثبت شده است، می باشد.
در مثالی که در چند شماره گذشته مورد استفاده قرار دادیم، دیدیم که میزان هزینه ای که صرف تبلیغات در رادیو و تلوزیون می شود تا چه اندازه بر روی فروش تاثیر داشته و با استفاده از پیدا کردن این ارتباط از طریق پردازش خطی، پیش بینی مورد نظر را انجام دادیم.
اما گاهی داده ها فقط شامل دو متغیر و اعداد مربوط به فروش نیست. بطور مثال جدولی را که وارد پانداز می کنیم (این فایل را دانلود کنید،) شامل ستونهای بسیاری است که مثلا در تحلیل مورد نظر ما همه آنها بکار نخواهند آمد بخصوص هنگامیکه نمایش داده ها بصورت بصری و نموداری مد نظر ماست.
در این جدول که داده های جمع آوری شده متعلق به فروش کالاهای گوناگون یک کمپانی که در شش کشور مختلف است، 15 ستون و 113036 ردیف وجود دارد. همانطور که مشاهده می کنید، این جدول شامل تاریخ، محصول، کشور، نواحی کشورها، سن و جنسیت خریداران، قیمت کالا، نرخ تمام شده، تعداد سفارشات و در ستون آخر درآمد حاصله از هر کدام از ردیف هاست.
بعنوان مثال ما می خواهیم که جدولهای کوچکتری از این جدول کلی جدا کرده، و تقاطع دو ستون را بصورت جدولهای کوچکتر عرضه کرده و در نهایت نگاره (Chart) آنرا نمایش دهیم . منظور از جدول کوچکتر، کم کردن ردیف ها نیست بلکه مثلا یکی از ستونها را به عنوان ردیف گذاشته و جمع حاصله از اعداد یک ستون دیگر را محاسبه کنیم.
با مثالهای مشخص موضوع را بررسی می کنیم. در ابتدا قبل از هر چیز باید برنامه های مربوط به بسته های پایتون را وارد کنیم. این مجموعه را جایی یادداشت کنید و همواره به عنوان اولین کاری که برروی داده ها انجام می دهیم، مقدمتا اجرا کنید.
%matplotlib inline
import numpy as np
import pandas as pd
import scipy.stats as stats
import matplotlib.pyplot as plt
import sklearn
import statsmodels.api as sm
import seaborn as sns
sns.set_style("whitegrid")
sns.set_context("poster")
from matplotlib import rcParams
---------------------------------------------------------
سپس داده ها را که بصورت مایکروسافت اکسل ذخیره شده و دانلود کرده اید را وارد کنید. در اینجا پنج داده اول این جدول طولانی را می بینید.
df = pd.read_excel('pivotVisual.xlsx')
df.head()
همواره پس از وارد کردن فایل داده ها چک کنید که داده های موجود در هر کدام از ستونها از چه نوع هستند (مثلا عدد، تاریخ، حروف نوشتار و غیره)
حتما بیاد دراید که این کار با اجرای ()info پس از نام جدول که با یک نقطه وصل می شود، میسر است.
اکنون به عنوان مثال می خواهیم مشخص کنیم که کمپانی مورد نظر ما به طور کلی در هر کشور چقدر فروش داشته است. یعنی درآمد کشور کانادا، استرالیا، آمریکا و... در مجموع از فروش همه کالاها در کل مناطقشان چقدر بوده است.
دو طریق تقریبا مشابه برای رسیدن به این هدف در پانداز وجود دارد. یکی groupby است و دیگری pivot_table.
توجه دارید که df نامی است که ما برای جدول برگزیدم. با اجرای این کد و انتخاب ستونهای مورد نظر، به نتیجه دلخواه می رسیم.
اینهم یک راه دیگر از طریق شیوه groupby است که دقیقا مثل بالایی عمل می کند.
طریق دوم هیچ تفاوتی با طریق اول ندارد و ظاهرا کمی راحتتر و معقول تر بنظر می رسد اما هر کدام را مایل بودید استفاده کنید. موضوع مهم دیگر در این روش، عملی است که در آخر کار انجام می شود. یعنی در اینجا جمع کلی درآمد هر کشور که از طریق فانکشن پایتون ()sum که معرف جمع کل است، حاصل شده است.
بجای جمع کل می شود فانکشن های دیگر مانند ()mean() , max(), min() ، mode, و یا بطور کلی ()describe را بکار برد.
شیوه دوم در بوجود آوردن چنین جدولی استفاده از متد pivot_table است. گرچه این دو شیوه به میزان زیادی به هم شبیه هستند، اما در مجموع شیوه دوم بیشتر توصیه می شود چراکه یک جدول کامل بدست می دهد. شیوه اول یعنی groupby برای سرعت کار بکار می رود اما در مجموع هر دو شیوه قابل استفاده است.
همانطور که ملاحظه می کنید براحتی می توان به این منظور رسید و بر روی ستون دوم نیز نام درآمد Revenue درج شده است. حالا اگر بخواهیم، می توانیم ستونهای دیگری را نیز در ا ین جدول بیاوریم.
در اینجا با گنجاندن یک ستون دیگر، می توانیم جمع هزینه را هم محاسبه کنیم. 'aggfunc='sum برای محاسبه مجموع این ستونهاست. همانطور که حدس می زنید بجای sum می توانیم از mean, mode و غیره استفاده کنیم.
- اطلاعات مربوط به این بخش و قسمتهای دیگر در باره پانداز، بیشتر برگرفته از کتاب 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من دو دسته دیتا دارم که بر حسب زمان مرتب شدن. وقتی دو تا دیتا رو با هم مقایسه میکنیم میبینیم در یکی از اونها بعضی از زمان ها نیستن . میخوام ببینم چه تاریخ و ساعتی دیتاش موجود نیست در مقایسه با دسته دیتای دیگه. چکار میتونم بکنم؟