ایجاد سلسله مراتب در پایتون (Python)
تا اینجا ما عمدتا بر داده های یک بعدی و دو بعدی متمرکز شده بودیم که به ترتیب در اشیاء سری Pandas و DataFrame ذخیره می شدند.
اغلب فراتر از این و ذخیره داده های با ابعاد بالاتر مفید است-یعنی داده های نمایه شده توسط بیش از یک یا دو کلید مفید است.در حالی که Pandas اشیاء Panel و Panel4D را ارائه می دهد که بطور طبیعی داده های سه بعدی و چهار بعدی را مدیریت می کند .
یک الگوی بسیار رایج در عمل استفاده از نمایه سازی سلسله مراتبی (که به عنوان چند نمایه سازی نیز شناخته می شود) است. چندین سطح شاخص را در یک شاخص واحد ترکیب کنید به این ترتیب ، داده های با ابعاد بالاتر را می توان بصورت فشرده در اشیاء سری یک بعدی و دو بعدی DataFrame آشنا کرد.
در این بخش ، ما ایجاد مستقیم اشیاء MultiIndex ، ملاحظات هنگام نمایه سازی ، برش و محاسبه آمار در داده های نمایه شده ضرب شده و روالهای مفید برای تبدیل بین نمایه های نمایه شده ساده و سلسله مراتبی داده های شما را بررسی می کنیم.
ما با واردات اطلاعات استاندارد شروع می کنیم:
یک سری نمایه سازی چندگانه
بیایید با در نظر گرفتن نحوه نمایش داده های دو بعدی در یک سری یک بعدی شروع کنیم.
ما مجموعه ای از داده ها را در نظر می گیریم که در آن هر نقطه دارای یک کاراکتر و کلید عددی است.
راه بد
فرض کنید می خواهید داده های مربوط به ایالت های دو سال مختلف را ردیابی کنید.
با استفاده از ابزارهای Pandas که قبلاً به آنها پرداخته ایم ، ممکن است وسوسه شوید که به سادگی از پنجره های Python به عنوان کلید استفاده کنید:
با استفاده از این طرح نمایه سازی ، می توانید مستقیماً سری را بر اساس این شاخص چندگانه فهرست بندی یا برش دهید:
اما به راحتی به همین جا ختم می شود. به عنوان مثال ، اگر شما نیاز به انتخاب همه مقادیر از سال 2010 دارید ، باید برخی از کارهای غیر استاندارد (و به طور بالقوه آهسته) را انجام دهید تا این اتفاق بیفتد:
این نتیجه مطلوب را ایجاد می کند ، اما به همان اندازه تمیز نیست (یا برای مجموعه داده های بزرگ کارآمد نیست) مانند نحو برشی که ما در پانداها دوست داشتیم.
Hierarchical Indexing python
راه بهتر: Pandas MultiIndex
خوشبختانه Pandas راه بهتری را ارائه می دهد. نمایه سازی چندگانه ما در اصل یک چند نمایه ابتدایی است و نوع Pandas MultiIndex به ما نوع عملیات مورد نظر را می دهد. ما می توانیم چند نمایه را از چندتایی به شرح زیر ایجاد کنیم:
توجه داشته باشید که MultiIndex شامل سطوح متعدد نمایه سازی است – در این مورد ، نام حالتها و سالها ، و همچنین برچسبهای متعدد برای هر نقطه داده که این سطوح را رمزگذاری می کند.
اگر سری خود را با این MultiIndex دوباره فهرست بندی کنیم ، نمای سلسله مراتبی داده ها را مشاهده می کنیم:
در اینجا دو ستون اول نمایش سری مقادیر چند شاخص را نشان می دهد ، در حالی که ستون سوم داده ها را نشان می دهد.
توجه داشته باشید که برخی از مدخل ها در ستون اول وجود ندارد: در این نمایش چند نمایه ، هر ورودی خالی همان مقدار خط بالای آن را نشان می دهد.
اکنون برای دسترسی به تمام داده هایی که شاخص دوم آنها 2010 است ، می توانیم به سادگی از نماد برش Pandas استفاده کنیم.
نتیجه یک آرایه فهرست بندی شده تنها با کلیدهایی است که ما به آنها علاقه داریم. این نحو بسیار راحت تر از راه حل چند نمایه سازی چند مرحله ای است که انجام شده است.
ما اکنون بیشتر درباره این نوع عملیات نمایه سازی بر روی داده های فهرست بندی شده سلسله مراتبی بحث خواهیم کرد.
MultiIndex به عنوان بعد اضافی
ممکن است در اینجا متوجه چیز دیگری شوید: ما به راحتی می توانیم داده های یکسانی را با استفاده از یک DataFrame ساده با برچسب های فهرست و ستون ذخیره کرده باشیم.
در واقع ، Pandas با این معادل سازی در ذهن ساخته شده است. روش unstack () یک سری نمایه شده را به سرعت به یک DataFrame نمایه شده تبدیل می کند:
به طور طبیعی ، روش stack () عمل مخالف را ارائه می دهد:
با دیدن این ، ممکن است تعجب کنید که چرا ما اصلاً برای نمایه سازی سلسله مراتبی زحمت می کشیم.
دلیل آن ساده است: همانطور که ما توانستیم از نمایه سازی چندگانه برای نمایش داده های دو بعدی در یک سری یک بعدی استفاده کنیم ، همچنین می توانیم از آن برای نمایش داده های سه بعدی یا بیشتر در یک سری یا DataFrame استفاده کنیم.
هر سطح اضافی در چند نمایه نشان دهنده یک بعد اضافی از داده ها است.استفاده از این ویژگی به ما انعطاف پذیری بیشتری در انواع داده هایی که می توانیم ارائه دهیم به ما می دهد.
به طور خاص ، ممکن است بخواهیم هر سال ستون دیگری از اطلاعات جمعیتی برای هر ایالت (مثلاً جمعیت زیر 18 سال) را اضافه کنیم. با MultiIndex این کار به سادگی اضافه کردن یک ستون دیگر به DataFrame است:
علاوه بر این ، همه عملکردها و سایر قابلیت های مورد بحث در عملیات روی داده ها در پانداها با شاخص های سلسله مراتبی نیز کار می کنند. در اینجا ما کسری از افراد زیر 18 سال را با توجه به داده های بالا محاسبه می کنیم:
ایجاد سلسله مراتب در پایتون (Python)
این به ما این امکان را می دهد که به راحتی و به سرعت داده های با ابعاد بالا را نیز دستکاری و کاوش کنیم.
روش های ایجاد MultiIndex
ساده ترین راه برای ساختن سری نمایه شده یا DataFrame این است که لیستی از دو یا چند آرایه فهرست را به سازنده منتقل کنید. مثلا:
کار ایجاد MultiIndex در پس زمینه انجام می شود.
به طور مشابه ، اگر از یک فرهنگ لغت با چند کلید مناسب به عنوان کلید عبور دهید ، Pandas به طور خودکار این را تشخیص داده و به طور پیش فرض از MultiIndex استفاده می کند:
با این وجود ، گاهی اوقات ایجاد صریح MultiIndex مفید است. ما در اینجا چند مورد از این روش ها را مشاهده می کنیم.
Hierarchical Indexing python
سازندگان صریح MultiIndex
برای انعطاف پذیری بیشتر در نحوه ایجاد ایندکس ، می توانید از سازندگان متد کلاس موجود در pd.MultiIndex استفاده کنید.
به عنوان مثال ، همانطور که قبلاً انجام دادیم ، می توانید MultiIndex را از یک لیست ساده از آرایه ها که مقادیر شاخص را در هر سطح ارائه می دهد ، بسازید:
می توانید آن را از لیستی از چندتایی که مقادیر شاخص چندگانه هر نقطه را نشان می دهد ، بسازید:
شما حتی می توانید آن را از محصول دکارتی تک شاخص ها بسازید:
به طور مشابه ، شما می توانید MultiIndex را مستقیماً با استفاده از کدگذاری داخلی آن با گذراندن سطوح (لیستی از لیست ها که حاوی مقادیر شاخص موجود برای هر سطح است) و برچسب ها (لیستی از لیست هایی که به این برچسب ها ارجاع می دهند) بسازید:
هر یک از این اشیاء را می توان به عنوان آرگومان فهرست هنگام ایجاد یک سری یا Dataframe منتقل کرد یا به روش reindex یک سری یا DataFrame موجود منتقل شد.
نام سطح MultiIndex
گاهی نامگذاری سطوح MultiIndex راحت است. این را می توان با انتقال آرگومان نامها به هر یک از سازندگان MultiIndex فوق ، یا با تعیین ویژگی نامهای ایندکس پس از این واقعیت:
با مجموعه داده های دخیل تر ، این می تواند راهی مفید برای پیگیری معنی مقادیر مختلف شاخص باشد.
MultiIndex برای ستون ها
در یک DataFrame ، سطرها و ستون ها کاملاً متقارن هستند و همانطور که سطرها می توانند سطوح متعددی از شاخص ها را داشته باشند ، ستون ها نیز می توانند چندین سطح داشته باشند. م
وارد زیر را که ماکت برخی از داده های پزشکی (تا حدی واقعی) است ، در نظر بگیرید:
ایجاد سلسله مراتب در پایتون (Python)
در اینجا می بینیم که چند نمایه سازی برای سطرها و ستون ها بسیار مفید است.این اساساً داده های چهار بعدی است ، که در آن ابعاد موضوع ، نوع اندازه گیری ، سال و شماره بازدید است.
با استفاده از این مورد می توانیم ، برای مثال ، ستون سطح بالا را با نام فرد فهرست بندی کنیم و یک DataFrame کامل حاوی اطلاعات آن شخص دریافت کنیم:
برای سوابق پیچیده که شامل اندازه گیری های متعدد برچسب زده شده در چندین نوبت برای بسیاری از موضوعات (مردم ، کشورها ، شهرها و غیره) است ، استفاده از سطرها و ستون های سلسله مراتبی می تواند بسیار مناسب باشد!
نمایه سازی و برش MultiIndex
نمایه سازی و برش در MultiIndex بصری طراحی شده است و اگر به شاخص ها به عنوان ابعاد افزوده فکر کنید ، به شما کمک می کند.
ابتدا به نمایه سازی سری های نمایه شده ضرب شده ، و سپس DataFrames با نمایه ضرب شده نگاه می کنیم.
ایجاد سلسله مراتب در پایتون (Python)
سری نمایه سازی چندگانه
سری چند نمایه ای از جمعیت ایالتی را که قبلاً دیدیم در نظر بگیرید:
ما می توانیم با ایندکس کردن چندین عبارت به عناصر واحد دسترسی پیدا کنیم:
MultiIndex همچنین از نمایه سازی جزئی یا نمایه سازی تنها یکی از سطوح موجود در فهرست پشتیبانی می کند. نتیجه یک سری دیگر است ، با حفظ شاخص های سطح پایین:
برش جزئی نیز وجود دارد ، مادامی که MultiIndex مرتب شده باشد (بحث در فهرست بندی های مرتب شده و غیر مرتب شده را ببینید):
با شاخص های مرتب شده ، نمایه سازی جزئی را می توان با گذراندن یک برش خالی در اولین شاخص ، در سطوح پایین تر انجام داد:
سایر انواع فهرست بندی و انتخاب (که در فهرست بندی و انتخاب داده ها مورد بحث قرار گرفته است) نیز کار می کند. به عنوان مثال ، انتخاب بر اساس ماسک های بولی:
انتخاب بر اساس نمایه سازی فانتزی نیز کار می کند:
ایجاد سلسله مراتب در پایتون (Python)
DataFrames نمایه شده را ضرب کنید
DataFrame چند نمایه شده به شیوه ای مشابه رفتار می کند.
به یاد داشته باشید که ستونها در یک DataFrame اصلی هستند و نحوی که برای سریهای نمایه شده ضرب می شود در ستونها اعمال می شود.
به عنوان مثال ، می توانیم داده های ضربان قلب Guido را با یک عمل ساده بازیابی کنیم:
همچنین ، مانند مورد تک نمایه ، می توانیم از نمایه های loc ، iloc و ix معرفی شده در فهرست بندی و انتخاب داده ها استفاده کنیم. مثلا:
این نمایه سازها نمای آرایه ای از داده های دو بعدی را ارائه می دهند ، اما هر شاخص جداگانه در loc یا iloc می تواند از چندین شاخص متعدد عبور کند. مثلا:
کار با برش های درون این چندتایی شاخص چندان راحت نیست. تلاش برای ایجاد یک برش در یک تاپل منجر به خطای نحوی می شود:
Hierarchical Indexing python
شما می توانید با ساختن قطعه مورد نظر به صراحت با استفاده از تابع () slice داخلی پایتون ، این مشکل را حل کنید ، اما راه بهتر در این زمینه استفاده از یک شیء IndexSlice است که Pandas دقیقاً این وضعیت را ارائه می دهد. مثلا:
راه های زیادی برای تعامل با داده ها در سری های نمایه شده چندگانه و 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