بعضی اوقات ، بیش از یک راه برای نمایش همان بینش از داده ها وجود دارد.
یکی از مشاغل اصلی یک دانشمند داده ، نمایش بینش کلیدی از داده ها به مخاطب است. با انجام این کار ، دانشمند داده باید دو چیز مهم را در نظر بگیرد: 1) چه ایده های اصلی در مورد داده ها باید منتقل شود ، و 2) نحوه تجزیه و تحلیل آنها و در نهایت نمایش داده می شود.
بسیاری از ابزارها برای تمیز کردن ، پردازش ، تجزیه و تحلیل و نمایش داده ها وجود دارند. در این مقاله ، من روی Pandas ، یک ماژول محبوب در پایتون تمرکز خواهم کرد که شامل ابزارهای مختلف مختلف برای تجزیه و تحلیل داده ها است.
یکی از روشهای اصلی نمایش داده ها از طریق پاندا ، محاسبه آمار خلاصه بر روی مجموعه پیچیده ای از نقاط داده است. در زیر ، من دو روش مختلف برای انجام این کار را با همان داده ها مقایسه می کنم: 1) با استفاده از گروه بندی و تجمع و 2) با استفاده از یک جدول محوری.
داده ها و هدف
برای این کار ، ما از مجموعه داده های زیر [1] به نام NBA_FULL استفاده خواهیم کرد. این شامل اطلاعاتی در مورد بازیکنان مختلف NBA در طول فصل های مختلف ، از فصل 1996-97 است.
مجموعه داده های اصلی دارای چند ستون دیگر است ، اما من مواردی را که برای ما مهمتر است استخراج کرده ام: player_name ، team_abbreviation ، سن ، pts و فصل.
هدف ما این خواهد بود که این داده ها را به طور معناداری آماری خلاصه زیر را به نمایش بگذاریم: میانگین سن بازیکن تیم NBA برای هر فصل. به عنوان مثال ، بگویید کسی باید بپرسد "میانگین سن بازیکن لس آنجلس لیکرز در فصل 2019-20 چیست؟"ما باید بتوانیم به راحتی پاسخ این سؤال را از داده های اصلاح شده خود بخوانیم.
بیایید به این دو روش که ممکن است این کار را انجام دهیم برسیم.
با استفاده از تجمع Groupby
به عنوان یک تازه کننده سریع ، گروه بندی و جمع آوری در پاندا اغلب با استفاده از عملکرد GroupBy به مقادیر گروهی توسط یک ستون خاص انجام می شود و سپس با استفاده از عملکرد AGG مربوطه برای جمع آوری مقادیر از یک ستون متفاوت.
بیایید قبل از مقابله با هدف خود از بالا به یک مثال ساده تر نگاه کنیم ، زیرا این کمی پیشرفته تر است. بگویید ما خط کد زیر را اجرا می کنیم:
این کد میانگین تعداد امتیازات را برای هر بازیکن در داده ها نشان می دهد ، در تمام فصلی که در آن گنجانده شده است. در اینجا چند نکته سریع برای توضیح اینکه کد چه مرحله به مرحله انجام می دهد وجود دارد:
- گروه بندی توسط ستون "player_name" این ستون را به عنوان فهرست ما مشخص می کند. سپس تمام مقادیر در گروههای مشخص شده توسط مقادیر منحصر به فرد در این ستون جمع می شوند.
- ما ستون "PTS" را به عنوان موردی که می خواهیم مقادیر تجمع را برای آن محاسبه کنیم انتخاب می کنیم ، زیرا به طور پیش فرض پاندا در تمام ستون های دیگر جمع می شود. ما ستون را با براکت های مضاعف انتخاب می کنیم تا پاندا به جای یک سری ، یک DataFrame را برگرداند.
- ما با . agg ("معنی") تماس می گیریم تا مشخص کنیم که برای هر بازیکن منحصر به فرد ، ما می خواهیم میانگین تعداد نقاط را در تمام زمان های مختلفی که در جدول ظاهر می شوند محاسبه کنیم (که مربوط به تمام فصول مختلفی است که در NBA بازی کرده اند). تعدادی از کارکردهای داخلی دیگر وجود دارد که می توانستیم از آنها استفاده کنیم (مانند حداکثر یا تعداد) ، و در صورت تمایل می توانستیم از یک عملکرد تعریف شده توسط کاربر نیز استفاده کنیم.
اکنون ، ما آماده هستیم تا وظیفه اصلی خود را برطرف کنیم. هدف ما را به یاد بیاورید: ما می خواهیم سن متوسط بازیکن تیم NBA برای هر فصل باشد. اگر این مطلب را با دقت بخوانید ، خواهید دید که ما واقعاً می خواهیم یک آمار خلاصه را بیش از دو ستون در داده های خود محاسبه کنیم: تیم و فصل. برای انجام این کار ، باید مشخص کنیم که در تماس با ما به Groupby ، توسط هر دو ستون گروه بندی می کنیم.
بیایید نگاهی به کد و خروجی بیندازیم ، و سپس آن را گام به گام تجزیه خواهیم کرد:
برخی از نکات کلیدی از کد:
- ما توسط دو ستون گروه می کنیم ، که یک DataFrame چند شاخص را به ما می دهد.
- باقیمانده کد شبیه به مثال اول ما است: ما یک ستون از علاقه "سن" را برای جمع آوری استخراج می کنیم و سپس عملکرد جمع آوری "میانگین" را مشخص می کنیم.
- روش تفسیر آنچه کد در زیر کاپوت انجام می دهد به شرح زیر است: برای هر تیم منحصر به فرد و ترکیب فصل ، میانگین برای ستون "player_age" محاسبه می شود. به عنوان مثال ، هر سطر که شامل ATL و 1996-97 است ، مشخص می شود و تمام سنین موجود در آن ردیف ها به طور متوسط برای تولید ردیف اول نهایی که در بالا مشاهده می کنیم ، به طور متوسط انجام می شود. این فرآیند برای سایر ترکیبات برای تولید ردیف های باقیمانده تکرار می شود.
به عنوان یک یادداشت زیبایی شناسی نهایی ، توصیه می کنم در انتها شاخص را دوباره تنظیم کنید تا خروجی قابل خواندن باشد:
و آنجا آن را دارید! اینگونه است که ما می توانیم برای دستیابی به هدف اولیه خود از گروه بندی و جمع استفاده کنیم. در مرحله بعد ، ما در نظر خواهیم گرفت که چگونه با استفاده از یک جدول محوری ، همان کار را انجام دهیم.
با استفاده از جدول محوری
یک جدول محوری از نظر فنی هنوز یک فریم در پاندا است ، اما به طور کلی به یک جدول که به روشی خاص فرمت شده است اشاره دارد. به طور خاص ، یک جدول محوری داده های شما را مجدداً تنظیم می کند تا مقادیر یک ستون به برچسب های ردیف تبدیل شود ، مقادیر ستون دوم به برچسب ستون تبدیل می شود و مقادیر ستون سوم برای هر ترکیب جمع می شود.
این یک جمله پیچیده بود ، بنابراین اجازه دهید آن را برای هدف ما اعمال کنیم. در مورد ما ، ما می توانیم کاری مانند موارد زیر انجام دهیم:
- تیم های منحصر به فرد NBA را به برچسب های ردیف تبدیل کنید
- فصل های منحصر به فرد را برچسب های ستون بسازید
- سنین را برای هر ترکیب با استفاده از عملکرد "میانگین" جمع کنید.
آشنا بنظر رسیدن؟این دقیقاً همان چیزی است که ما با Groupby در بالا انجام دادیم ، اما به روشی کمی متفاوت فرمت شد. بیایید نگاهی به کدی که این کار را انجام می دهد نگاهی بیندازیم:
ماموریت انجام شد! اکنون ، می توانیم برای هر ورودی در جدول خود به ردیف و ستون مربوطه نگاه کنیم تا تیم و ترکیب فصلی را که با آن مطابقت دارد تعیین کنیم. در اینجا چند نکته کلیدی در مورد نحوه عملکرد کد آورده شده است:
- "Index" مشخص می کند که برچسب های منحصر به فرد ستون ما به عنوان شاخص (یا برچسب های ردیف) از داده های خروجی ما می خواهیم.
- "ستون ها" مشخص می کند که مقادیر منحصر به فرد ستون ما به عنوان برچسب ستون DataFrame خروجی ما می خواهیم.
- "مقادیر" ستون حاوی مقادیری را که می خواهیم جمع کنیم مشخص می کند.
- "Aggfunc" عملکرد تجمیعی را که می خواهیم استفاده کنیم مشخص می کند.
و با این کار ، ما می بینیم که ما به روش دیگری برای نشان دادن همان داده ها روبرو شده ایم.
چرا مهم است؟
بنابراین ، آیا استفاده از یک تکنیک بر دیگری تفاوت ایجاد می کند؟از منظر کاملاً کمی ، می توان استدلال کرد که واقعاً مهم نیست - در پایان روز ، هر دو جدول خروجی داده های یکسانی را نشان می دهند.
با این حال ، علم خوب داده چیزی بیش از شماره ها است. هنگام نمایش داده ها ، مهم است که در نظر بگیرید که چه چیزی درک مخاطبان را به حداکثر می رساند.
هیچ کس "بهتر" وجود ندارد - این بستگی به وضعیت دارد. به عنوان مثال ، بسیاری از افراد به طور کلی ممکن است صفحه نمایش pivot_table را ترجیح دهند زیرا آنها را برای مطابقت با ردیف ها و ستون ها طبیعی تر می دانند تا یک مقدار جمع شده پیدا کنند. با این حال ، هنگامی که داده های شما دارای برچسب های منحصر به فرد بسیاری است ، جداول محوری می توانند کثیف شوند. حتی در مثال بالا ، من فقط می توانم بخشی از خروجی DataFrame را نشان دهم (ستون های بیشتری در سمت راست وجود دارد) ، زیرا برای چسباندن کامل خیلی بزرگ بود. در مقابل ، صفحه نمایش Groupby اطلاعات کمتری در هر ردیف دارد و منجر به بار کمتر اطلاعات می شود. برای یک مجموعه کوچکتر از داده ها ، صفحه نمایش محوری ممکن است مفیدتر باشد ، با نمایش منطقی (احتمالاً) منطقی تر از داده های جمع شده.
مهمترین چیز این است که چندین نمایشگاه را کشف کنید و اطمینان حاصل کنید که تصمیم نهایی فواید را برای هرکسی که در نهایت با این کار ، تفسیر یا مشاهده این داده ها کار خواهد کرد ، در اولویت قرار می دهد. اگر می توانید این کار را انجام دهید ، پس در راه رسیدن به یک دانشمند خوب داده هستید.
تا دفعه بعد ، مردمی!
آیا می خواهید در پایتون برتری داشته باشید؟دسترسی منحصر به فرد و رایگان به راهنماهای ساده و آسان برای خواندن من در اینجا دریافت کنید. آیا می خواهید داستانهای نامحدودی را در Medium بخوانید؟با پیوند ارجاع من در زیر ثبت نام کنید!
مبانی تجارت فارکس...
ما را در سایت مبانی تجارت فارکس دنبال می کنید
برچسب :
نویسنده : سحر دولتشاهی
بازدید : 62
تاريخ : يکشنبه
28 اسفند
1401 ساعت: 16:25