آموزش

آموزش جامع مرتب‌سازی داده‌ها در Pandas

برای مرتب‌سازی سطرها بر اساس مقادیر ستون‌ها، از متد ()sort_values استفاده کن. اگر می‌خوای سطرها رو بر اساس اندیس دیتافریم مرتب کنی، از ()sort_index استفاده کن. با ترکیب این دو متد، می‌تونی داده‌هات رو از زوایای مختلف بررسی و تحلیل کنی.

تاریخ انتشار:
20 مرداد 1405
پایتون
4 دقیقه
کاربرهای فینکا در چه شرکت‌هایی مشغول به کار هستند؟

پیدا کردن داده‌های جالب در یک دیتافریم، معمولاً با تغییر ترتیب ردیف‌ها خیلی راحت‌تر می‌شه. با دادن اسم یک ستون به .sort_values()، می‌تونی ردیف‌ها رو بر اساس مقادیر همون ستون مرتب کنی.

اگه چندتا ردیف مقدار یکسانی داشتن (مثلاً وقتی مقادیر رو بر اساس یک متغیر دسته‌ای مرتب می‌کنی)، می‌تونی با اضافه کردن یک ستون دیگه برای مرتب‌سازی، این تساوی رو از بین ببری. کافیه یک لیست از اسم ستون‌ها بهش بدی تا ردیف‌ها بر اساس چند ستون مرتب بشن.

مرتب‌سازی بر اساس... سینتکس
یک ستون df.sort_values("breed")
چند ستون df.sort_values(["breed", "weight_kg"])

 

مرتب‌سازی ردیف‌ها بر اساس مقادیر ستون با ()sort_values

می‌تونی با مرتب کردن ردیف‌ها، ترتیبشون رو طوری تغییر بدی که جالب‌ترین داده‌ها بیان بالای دیتافریم قرار بگیرن.

مرتب‌سازی بر اساس یک ستون

مثلاً وقتی متد sort_values() رو روی ستون weight_kg در دیتافریم سگ‌ها (dogs) اجرا می‌کنیم، سبک‌ترین سگ (Stella) میاد بالا و سنگین‌ترین سگ (Bernie) میره پایین قرار می‌گیره.

خروجی
      name        breed  color  height_cm  weight_kg date_of_birth
5   Stella    Chihuahua    Tan         18          2    2015-04-20
3   Cooper    Schnauzer   Gray         49         17    2011-12-11
0    Bella     Labrador  Brown         56         24    2013-07-01
1  Charlie       Poodle  Black         43         24    2016-09-16
2     Lucy    Chow Chow  Brown         46         24    2014-08-25
4      Max     Labrador  Black         59         29    2017-01-20
6   Bernie  St. Bernard  White         77         74    2018-02-27

اگه آرگومان ascending رو روی False تنظیم کنی، داده‌ها برعکس مرتب می‌شن؛ یعنی از سنگین‌ترین سگ به سبک‌ترین سگ.

خروجی
      name        breed  color  height_cm  weight_kg date_of_birth
6   Bernie  St. Bernard  White         77         74    2018-02-27
4      Max     Labrador  Black         59         29    2017-01-20
0    Bella     Labrador  Brown         56         24    2013-07-01
1  Charlie       Poodle  Black         43         24    2016-09-16
2     Lucy    Chow Chow  Brown         46         24    2014-08-25
3   Cooper    Schnauzer   Gray         49         17    2011-12-11
5   Stella    Chihuahua    Tan         18          2    2015-04-20

مرتب‌سازی بر اساس چند ستون

با دادن یک لیست از اسم ستون‌ها به sort_values()، می‌تونیم مرتب‌سازی رو بر اساس چند متغیر انجام بدیم. مثلاً اینجا، اول بر اساس وزن و بعد بر اساس قد مرتب می‌کنیم. با این کار، با وجود اینکه چارلی (Charlie)، لوسی (Lucy) و بلا (Bella) هم‌وزن هستن، به ترتیب از کوتاه‌ترین به بلندترین قد مرتب می‌شن.

خروجی
      name        breed  color  height_cm  weight_kg date_of_birth
5   Stella    Chihuahua    Tan         18          2    2015-04-20
3   Cooper    Schnauzer   Gray         49         17    2011-12-11
1  Charlie       Poodle  Black         43         24    2016-09-16
2     Lucy    Chow Chow  Brown         46         24    2014-08-25
0    Bella     Labrador  Brown         56         24    2013-07-01
4      Max     Labrador  Black         59         29    2017-01-20
6   Bernie  St. Bernard  White         77         74    2018-02-27

برای تغییر جهت مرتب‌سازی، می‌تونی یک لیست به آرگومان ascending بدی تا مشخص بشه هر متغیر باید در چه جهتی مرتب بشه. الان چارلی، لوسی و بلا از بلندترین به کوتاه‌ترین مرتب شدن.

خروجی
      name        breed  color  height_cm  weight_kg date_of_birth
5   Stella    Chihuahua    Tan         18          2    2015-04-20
3   Cooper    Schnauzer   Gray         49         17    2011-12-11
0    Bella     Labrador  Brown         56         24    2013-07-01
2     Lucy    Chow Chow  Brown         46         24    2014-08-25
1  Charlie       Poodle  Black         43         24    2016-09-16
4      Max     Labrador  Black         59         29    2017-01-20
6   Bernie  St. Bernard  White         77         74    2018-02-27

مرتب‌سازی بر اساس اندیس ردیف با ()sort_index

بعضی وقتا شاید بخوای ردیف‌ها رو به‌جای مقادیر ستون‌ها، بر اساس برچسب‌هاشون (یعنی همون اندیس دیتافریم) مرتب کنی. در این شرایط می‌تونی به‌جای sort_values() از متد sort_index() استفاده کنی. یادت باشه که sort_index() به‌طور پیش‌فرض، ردیف‌ها رو صعودی و بر اساس اندیسشون مرتب می‌کنه:

اگه می‌خوای ردیف‌ها نزولی مرتب بشن، فقط کافیه ascending=False رو بهش پاس بدی:

همین‌طور وقتی با یک اندیس چندسطحی (سلسله‌مراتبی) کار می‌کنی، sort_index() می‌تونه چند سطح رو به‌راحتی مرتب کنه. فقط باید یک لیست به پارامترهای level یا ascending بدی (دقیقاً مثل قبل که یک لیست به sort_values() می‌دادیم):

مثال مرتب‌سازی مقادیر در Pandas

در مثال زیر، باید دیتافریم homelessness رو بر اساس تعداد افراد بی‌خانمان از کمترین به بیشترین مرتب کنی و نتیجه رو در متغیری به اسم homelessness_ind ذخیره کنی. در آخر هم با استفاده از متد head()، چند ردیف اول این دیتافریم مرتب‌شده رو چاپ می‌کنی.

خروجی
                region         state  individuals  family_members  state_pop
50            Mountain       Wyoming        434.0           205.0     577601
34  West North Central  North Dakota        467.0            75.0     758080
7       South Atlantic      Delaware        708.0           374.0     965479
39         New England  Rhode Island        747.0           354.0    1058287
45         New England       Vermont        780.0           511.0     624358

می‌تونی خودت این کد رو اینجا امتحان کنی.

برای اینکه درباره‌ مرتب‌سازی و استخراج زیرمجموعه‌های داده‌ها بیشتر یاد بگیری، می‌تونی این ویدیو از دوره‌ کار با داده‌ها با Pandas از فینکا رو ببینی.

یادگیری بیشتر

در این مقاله یاد گرفتیم چه زمانی باید از sort_index() و چه زمانی از sort_values() استفاده کنیم. وقتی می‌خوای ردیف‌ها رو بر اساس مقادیر ستون مرتب کنی، برو سراغ sort_values() و وقتایی که می‌خوای ردیف‌ها رو بر اساس برچسب‌هاشون (یعنی همون اندیس دیتافریم) مرتب کنی، از sort_index() استفاده کن.

ما در فینکا آموزش‌های کاربردی و مفید دیگه‌ای هم برای pandas داریم که بهت کمک می‌کنه بیشتر یاد بگیری و تمرین کنی. ضمناً راهنماهای دیگه‌ای هم برای حل مشکلات رایج برات آماده کردیم، مثل نحوه‌ وارد کردن فایل‌های CSV به Pandas. یادت نره که سری هم به مسیر مهارتی برنامه‌نویسی پایتون ما بزنی تا مهارت‌هات رو حسابی ارتقا بدی.

اشتراک‌گذاری
فهرست مطالب
  • مرتب‌سازی ردیف‌ها بر اساس مقادیر ستون با ()sort_values
  • مرتب‌سازی بر اساس اندیس ردیف با ()sort_index
  • مثال مرتب‌سازی مقادیر در Pandas
  • یادگیری بیشتر

دریافت اپلیکیشن فینکا

با اپلیکیشن فینکا، به بیشتر دوره‌ها و مسیرها روی موبایل دسترسی دارید، تمرین می‌کنید و یادگیری رو هم‌زمان روی موبایل و دسکتاپ ادامه می‌دید.