اذهب إلى المحتوى

السؤال

نشر (معدل)

لنفرض لدي اطار البيانات التالي

df = pd.DataFrame([[1, 2, 'March'],[5, 6, 'Dec'],[3, 4, 'April']], columns=['a','b','m'])

يكون الخرج

 a  b      m
0  1  2  March
1  5  6    Dec
2  3  4  April

 اردت ترتيب الصفوف حسب الشهر كيف يمكنني ذلك

 a  b      m
0  1  2  March
2  3  4  April
1  5  6    Dec

 

تم التعديل في بواسطة Ali Haidar Ahmad
توضيح عنوان السؤال

Recommended Posts

  • 0
نشر

يمكن تطبيق مفهوم التصنيف Categorical على حقل معين ومن ثم ترتيب إطار البيانات على أساسه:

df['m'] = pd.Categorical(df['m'], ["March", "April", "Dec"])

df.sort_values("m")

out: =

   a  b      m
0  1  2  March
2  3  4  April
1  5  6    Dec

Categoricals : هو نمط بيانات يستخدم في العمليات الإحصائية، ويكون له مجموعة ثابتة من الخيارات.

يمكن التعلم أكثر عن نمط البيانات هذا من هنا: Categoricals

  • 0
نشر

سننشئ أولاً إطار البيانات:

import pandas as pd 
df = pd.DataFrame([[1, 2, 'March'],
                   [5, 6, 'Dec'],
                   [3, 4, 'April']], columns=['a','b','m'])
df
"""
 	a 	b 	m
0 	1 	2 	March
1 	5 	6 	Dec
2 	3 	4 	April
"""

1. فرز البيانات وفقًا لقيم عمود محدد:
باستخدام الدالة df.sort_values، يمكنك فرز نقاط البيانات (الصفوف) بترتيب تصاعدي أو تنازلي، وعندما لا تحدد طريقة الترتيب، فإنه يعتبره افتراضيًا ترتيبًا تصاعديًّا.

# الفرز بشكل افتراضي
df2 = df.sort_values('m')
print(df2)
"""
a  b      m
2  3  4  April
1  5  6    Dec
0  1  2  March
"""

في حالة رغبتك في تحديث إطار البيانات الحالي (أي عدم إنشاء نسخة والتعديل عليها)، استخدم inplace = True.

df.sort_values('m', inplace=True)
print(df)

إذا أردت الفرز بترتيب تنازلي، استخدم ascending=False. يمكنك أيضًا تحديد أوامر فرز مختلفة لكل تسمية label.

df2 = df.sort_values('m', ascending=False)
print(df2)

2. فرز البيانات وفقًا لعدة أعمدة:
تدعم الدالة السابقة أيضًا الفرز اعتمادًا على قيم أعمدة متعددة في وقت واحد، وذلك من خلال تمرير قائمة بأسماء هذه الأعمدة إلى الوسيط by.

df2 = df.sort_values(by=['m','b'])
print(df2)


- قد تحتوي بعض الأعمدة على قيم مفقودة Nan، هذه القيم يتم وضعها في الأسفل عند القيام بعملية الفرز، لكن في حال أردت أن تضعها في بداية إطار البيانات، فاستخدم الوسيط na_position='first'.

df2 = df.sort_values(by=['Courses','Fee'], na_position='first')
print(df2)

- في حالة رغبتك في تطبيق دالة مخصصة أو أي دالة موجودة للفرز، يمكنك استخدام الوسيط key. المثال أدناه يحول الدورات إلى أحرف صغيرة ويقوم بالفرز. مثلاً هنا نقوم بتطبيق دالة تقوم بتحويل كل الأحرف في كل شهر إلى أحرف صغيرة قبل تطبيق عملية الفرز.

df2 = df.sort_values(by='m', key=lambda col: col.str.lower())
print(df2)

- أخيرًا، يجب أن تعلم أنه بعد كل عملية فرز من خلال الدالة السابقة فإن ترتيب الفهرس سيصبح عشوائي، لذا إن كنت تحتاج إلى قيم فهرس مرتبة لابد لك من إعادة ضبط قيم الفهرس من جديد أو إخبار هذه الدالة بأن تترك قيم عمود الفهرس من دون تغيير من خلال الوسيط ignore_index=True.

df2 = df.sort_values(by='m', ignore_index=True)

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...