همه دسته بندی ها
Hierarchical Indexing python - داده کاوی ویستا

ایجاد سلسله مراتب در پایتون (Python)

ایجاد سلسله مراتب در پایتون (Python)

تا اینجا ما عمدتا بر داده های یک بعدی و دو بعدی متمرکز شده بودیم که به ترتیب در اشیاء سری Pandas و DataFrame ذخیره می شدند.

اغلب فراتر از این و ذخیره داده های با ابعاد بالاتر مفید است-یعنی داده های نمایه شده توسط بیش از یک یا دو کلید مفید است.در حالی که Pandas اشیاء Panel و Panel4D را ارائه می دهد که بطور طبیعی داده های سه بعدی و چهار بعدی را مدیریت می کند .

یک الگوی بسیار رایج در عمل استفاده از نمایه سازی سلسله مراتبی (که به عنوان چند نمایه سازی نیز شناخته می شود) است. چندین سطح شاخص را در یک شاخص واحد ترکیب کنید به این ترتیب ، داده های با ابعاد بالاتر را می توان بصورت فشرده در اشیاء سری یک بعدی و دو بعدی DataFrame آشنا کرد.

در این بخش ، ما ایجاد مستقیم اشیاء MultiIndex ، ملاحظات هنگام نمایه سازی ، برش و محاسبه آمار در داده های نمایه شده ضرب شده و روالهای مفید برای تبدیل بین نمایه های نمایه شده ساده و سلسله مراتبی داده های شما را بررسی می کنیم.

 

ما با واردات اطلاعات استاندارد شروع می کنیم:

Hierarchical Indexing python

 

یک سری نمایه سازی چندگانه

بیایید با در نظر گرفتن نحوه نمایش داده های دو بعدی در یک سری یک بعدی شروع کنیم.

ما مجموعه ای از داده ها را در نظر می گیریم که در آن هر نقطه دارای یک کاراکتر و کلید عددی است.

راه بد

فرض کنید می خواهید داده های مربوط به ایالت های دو سال مختلف را ردیابی کنید.

با استفاده از ابزارهای Pandas که قبلاً به آنها پرداخته ایم ، ممکن است وسوسه شوید که به سادگی از پنجره های Python به عنوان کلید استفاده کنید:

 

Hierarchical Indexing python

 

با استفاده از این طرح نمایه سازی ، می توانید مستقیماً سری را بر اساس این شاخص چندگانه فهرست بندی یا برش دهید:

Hierarchical Indexing python - VISTA

 

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

Hierarchical Indexing python - VISTA

 

این نتیجه مطلوب را ایجاد می کند ، اما به همان اندازه تمیز نیست (یا برای مجموعه داده های بزرگ کارآمد نیست) مانند نحو برشی که ما در پانداها دوست داشتیم.

Hierarchical Indexing python

راه بهتر: Pandas MultiIndex

خوشبختانه Pandas راه بهتری را ارائه می دهد. نمایه سازی چندگانه ما در اصل یک چند نمایه ابتدایی است و نوع Pandas MultiIndex به ما نوع عملیات مورد نظر را می دهد. ما می توانیم چند نمایه را از چندتایی به شرح زیر ایجاد کنیم:

Hierarchical Indexing python - VISTA

 

توجه داشته باشید که MultiIndex شامل سطوح متعدد نمایه سازی است – در این مورد ، نام حالتها و سالها ، و همچنین برچسبهای متعدد برای هر نقطه داده که این سطوح را رمزگذاری می کند.

اگر سری خود را با این MultiIndex دوباره فهرست بندی کنیم ، نمای سلسله مراتبی داده ها را مشاهده می کنیم:

 

Hierarchical Indexing python - VISTA

در اینجا دو ستون اول نمایش سری مقادیر چند شاخص را نشان می دهد ، در حالی که ستون سوم داده ها را نشان می دهد.

توجه داشته باشید که برخی از مدخل ها در ستون اول وجود ندارد: در این نمایش چند نمایه ، هر ورودی خالی همان مقدار خط بالای آن را نشان می دهد.

اکنون برای دسترسی به تمام داده هایی که شاخص دوم آنها 2010 است ، می توانیم به سادگی از نماد برش Pandas استفاده کنیم.

Hierarchical Indexing python - VISTA

 

نتیجه یک آرایه فهرست بندی شده تنها با کلیدهایی است که ما به آنها علاقه داریم. این نحو بسیار راحت تر از راه حل چند نمایه سازی چند مرحله ای است که انجام شده است.

ما اکنون بیشتر درباره این نوع عملیات نمایه سازی بر روی داده های فهرست بندی شده سلسله مراتبی بحث خواهیم کرد.

 

MultiIndex به عنوان بعد اضافی

ممکن است در اینجا متوجه چیز دیگری شوید: ما به راحتی می توانیم داده های یکسانی را با استفاده از یک DataFrame ساده با برچسب های فهرست و ستون ذخیره کرده باشیم.

در واقع ، Pandas با این معادل سازی در ذهن ساخته شده است. روش unstack () یک سری نمایه شده را به سرعت به یک DataFrame نمایه شده تبدیل می کند:

 

Hierarchical Indexing python - VISTA

به طور طبیعی ، روش stack () عمل مخالف را ارائه می دهد:

Hierarchical Indexing python - VISTA

 

با دیدن این ، ممکن است تعجب کنید که چرا ما اصلاً برای نمایه سازی سلسله مراتبی زحمت می کشیم.

دلیل آن ساده است: همانطور که ما توانستیم از نمایه سازی چندگانه برای نمایش داده های دو بعدی در یک سری یک بعدی استفاده کنیم ، همچنین می توانیم از آن برای نمایش داده های سه بعدی یا بیشتر در یک سری یا DataFrame استفاده کنیم.

هر سطح اضافی در چند نمایه نشان دهنده یک بعد اضافی از داده ها است.استفاده از این ویژگی به ما انعطاف پذیری بیشتری در انواع داده هایی که می توانیم ارائه دهیم به ما می دهد.

به طور خاص ، ممکن است بخواهیم هر سال ستون دیگری از اطلاعات جمعیتی برای هر ایالت (مثلاً جمعیت زیر 18 سال) را اضافه کنیم. با MultiIndex این کار به سادگی اضافه کردن یک ستون دیگر به DataFrame است:

 

Hierarchical Indexing python - VISTA

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

ایجاد سلسله مراتب در پایتون (Python)

Hierarchical Indexing python - VISTA

این به ما این امکان را می دهد که به راحتی و به سرعت داده های با ابعاد بالا را نیز دستکاری و کاوش کنیم.

 

روش های ایجاد MultiIndex

ساده ترین راه برای ساختن سری نمایه شده یا DataFrame این است که لیستی از دو یا چند آرایه فهرست را به سازنده منتقل کنید. مثلا:

 

Hierarchical Indexing python - VISTA

 

کار ایجاد MultiIndex در پس زمینه انجام می شود.

به طور مشابه ، اگر از یک فرهنگ لغت با چند کلید مناسب به عنوان کلید عبور دهید ، Pandas به طور خودکار این را تشخیص داده و به طور پیش فرض از MultiIndex استفاده می کند:

 

Hierarchical Indexing python - VISTA

 

با این وجود ، گاهی اوقات ایجاد صریح MultiIndex مفید است. ما در اینجا چند مورد از این روش ها را مشاهده می کنیم.

Hierarchical Indexing python

سازندگان صریح MultiIndex

برای انعطاف پذیری بیشتر در نحوه ایجاد ایندکس ، می توانید از سازندگان متد کلاس موجود در pd.MultiIndex استفاده کنید.

به عنوان مثال ، همانطور که قبلاً انجام دادیم ، می توانید MultiIndex را از یک لیست ساده از آرایه ها که مقادیر شاخص را در هر سطح ارائه می دهد ، بسازید:

Hierarchical Indexing python - VISTA

 

می توانید آن را از لیستی از چندتایی که مقادیر شاخص چندگانه هر نقطه را نشان می دهد ، بسازید:

Hierarchical Indexing python - VISTA

 

شما حتی می توانید آن را از محصول دکارتی تک شاخص ها بسازید:

Hierarchical Indexing python - VISTA

 

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

Hierarchical Indexing python - VISTA

 

هر یک از این اشیاء را می توان به عنوان آرگومان فهرست هنگام ایجاد یک سری یا Dataframe منتقل کرد یا به روش reindex یک سری یا DataFrame موجود منتقل شد.

 

نام سطح MultiIndex

گاهی نامگذاری سطوح MultiIndex راحت است. این را می توان با انتقال آرگومان نامها به هر یک از سازندگان MultiIndex فوق ، یا با تعیین ویژگی نامهای ایندکس پس از این واقعیت:

 

Hierarchical Indexing python - VISTA

با مجموعه داده های دخیل تر ، این می تواند راهی مفید برای پیگیری معنی مقادیر مختلف شاخص باشد.

 

MultiIndex برای ستون ها

در یک DataFrame ، سطرها و ستون ها کاملاً متقارن هستند و همانطور که سطرها می توانند سطوح متعددی از شاخص ها را داشته باشند ، ستون ها نیز می توانند چندین سطح داشته باشند. م

وارد زیر را که ماکت برخی از داده های پزشکی (تا حدی واقعی) است ، در نظر بگیرید:

Hierarchical Indexing python - VISTA

ایجاد سلسله مراتب در پایتون (Python)

در اینجا می بینیم که چند نمایه سازی برای سطرها و ستون ها بسیار مفید است.این اساساً داده های چهار بعدی است ، که در آن ابعاد موضوع ، نوع اندازه گیری ، سال و شماره بازدید است.

با استفاده از این مورد می توانیم ، برای مثال ، ستون سطح بالا را با نام فرد فهرست بندی کنیم و یک DataFrame کامل حاوی اطلاعات آن شخص دریافت کنیم:

Hierarchical Indexing python - VISTA

 

برای سوابق پیچیده که شامل اندازه گیری های متعدد برچسب زده شده در چندین نوبت برای بسیاری از موضوعات (مردم ، کشورها ، شهرها و غیره) است ، استفاده از سطرها و ستون های سلسله مراتبی می تواند بسیار مناسب باشد!

 

نمایه سازی و برش MultiIndex

نمایه سازی و برش در MultiIndex بصری طراحی شده است و اگر به شاخص ها به عنوان ابعاد افزوده فکر کنید ، به شما کمک می کند.

ابتدا به نمایه سازی سری های نمایه شده ضرب شده ، و سپس DataFrames با نمایه ضرب شده نگاه می کنیم.

ایجاد سلسله مراتب در پایتون (Python)

سری نمایه سازی چندگانه

سری چند نمایه ای از جمعیت ایالتی را که قبلاً دیدیم در نظر بگیرید:

 

Hierarchical Indexing python - VISTA

 

ما می توانیم با ایندکس کردن چندین عبارت به عناصر واحد دسترسی پیدا کنیم:

 

Hierarchical Indexing python - VISTA

MultiIndex همچنین از نمایه سازی جزئی یا نمایه سازی تنها یکی از سطوح موجود در فهرست پشتیبانی می کند. نتیجه یک سری دیگر است ، با حفظ شاخص های سطح پایین:

Hierarchical Indexing python - VISTA

 

برش جزئی نیز وجود دارد ، مادامی که MultiIndex مرتب شده باشد (بحث در فهرست بندی های مرتب شده و غیر مرتب شده را ببینید):

 

Hierarchical Indexing python - VISTA

 

با شاخص های مرتب شده ، نمایه سازی جزئی را می توان با گذراندن یک برش خالی در اولین شاخص ، در سطوح پایین تر انجام داد:

 

Hierarchical Indexing python - VISTA

 

سایر انواع فهرست بندی و انتخاب (که در فهرست بندی و انتخاب داده ها مورد بحث قرار گرفته است) نیز کار می کند. به عنوان مثال ، انتخاب بر اساس ماسک های بولی:

Hierarchical Indexing python - VISTA

 

انتخاب بر اساس نمایه سازی فانتزی نیز کار می کند:

Hierarchical Indexing python - VISTA

ایجاد سلسله مراتب در پایتون (Python)

DataFrames نمایه شده را ضرب کنید

DataFrame چند نمایه شده به شیوه ای مشابه رفتار می کند.

 

Hierarchical Indexing python - VISTA

به یاد داشته باشید که ستونها در یک DataFrame اصلی هستند و نحوی که برای سریهای نمایه شده ضرب می شود در ستونها اعمال می شود.

به عنوان مثال ، می توانیم داده های ضربان قلب Guido را با یک عمل ساده بازیابی کنیم:

Hierarchical Indexing python - VISTA

 

همچنین ، مانند مورد تک نمایه ، می توانیم از نمایه های loc ، iloc و ix معرفی شده در فهرست بندی و انتخاب داده ها استفاده کنیم. مثلا:

 

Hierarchical Indexing python - VISTA

این نمایه سازها نمای آرایه ای از داده های دو بعدی را ارائه می دهند ، اما هر شاخص جداگانه در loc یا iloc می تواند از چندین شاخص متعدد عبور کند. مثلا:

Hierarchical Indexing python - VISTA

 

کار با برش های درون این چندتایی شاخص چندان راحت نیست. تلاش برای ایجاد یک برش در یک تاپل منجر به خطای نحوی می شود:

Hierarchical Indexing python - VISTA

Hierarchical Indexing python

شما می توانید با ساختن قطعه مورد نظر به صراحت با استفاده از تابع () slice داخلی پایتون ، این مشکل را حل کنید ، اما راه بهتر در این زمینه استفاده از یک شیء IndexSlice است که Pandas دقیقاً این وضعیت را ارائه می دهد. مثلا:

 

Hierarchical Indexing python - VISTA

راه های زیادی برای تعامل با داده ها در سری های نمایه شده چندگانه و DataFrames وجود دارد ، و مانند بسیاری از ابزارهای موجود در این کتاب ، بهترین راه برای آشنایی با آنها این است که آنها را امتحان کنید!

 

تنظیم مجدد چند شاخصه

یکی از کلیدهای کار با داده های نمایه شده چندگانه ، نحوه تبدیل موثر داده ها است.

تعدادی عملیات وجود دارد که تمام اطلاعات موجود در مجموعه داده را حفظ می کند ، اما برای محاسبات مختلف دوباره تنظیم می کند.

ما نمونه کوتاهی از این مورد را در متدهای stack () و unstack () مشاهده کردیم ، اما روشهای بسیار دیگری برای کنترل دقیق ترتیب مجدد داده ها بین شاخص ها و ستون های سلسله مراتبی وجود دارد.

 

ایجاد سلسله مراتب در پایتون (Python)

دوره آموزشی زبان برنامه نویسی پایتون »کلیک کنید» یک برنامه جامع است که بر توسعه سریع نرم‌افزارهای کاربردی، برنامه‌نویسی شی‌گرا و کاربری ماژول و….  با استفاده از ابزار Python تمرکز دارد.

سپاسگذاریم از وقتی که برای خواندن این مقاله گذاشتید

 

برای خرید لایسنس نرم افزار Tableau کلیک کنید

.

برای مشاهده ویدیوهای آموزشی داده کاوی و هوش تجاری ما را در شبکه های اجتماعی دنبال کنید

Youtube Chanel :VISTA Data Miningکانال یوتیوب

Aparat Chanel: VISTA Data Miningکانال آپارات

Instagram Chanel: VISTA Data Miningپیج اینستاگرام

Telegram Chanel: VISTA Data Miningکانال تلگرام

Linkedin Chanel: VISTA Companyکانال لینکدین

 

خرید دوره آموزشی پایتون

 

امتیاز دهید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

سبد خرید
ورود

هنوز حساب کاربری ندارید؟

خانه
0 محصول سبد خرید
0 علاقه مندی
حساب کاربری من