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

ترتيب العناصر تصاعديًا أو تنازليًا في شكل dataframe في بايثون

Mohamed Elnemr

السؤال

Recommended Posts

  • 0

بما ان البيانات على شكل dataframe، فانه من المستحب التعامل معها استخدام pandas ، وذلك للتسهيل.

من أجل ترتيب الاسماء بشكل تصاعدي يمكن استخدام الكود التالي:

# استدعاء المكتبة
import pandas as pd
  
# قراءة ملف البيانات
data = pd.read_csv("data.csv")
  
# ترتيب البيانات بالاسم
data.sort_values("Name", axis = 0, ascending = True,
                 inplace = True, na_position ='last')
  
# عرض الترتيب الجديد
data

لاحظ انه يجب تغيير اسم ملف البيانات تبعا لاسمه الحقيقي.

كذلك اذا أردت ترتيبه بشكل تنازلي كل ما عليك هو تغيير ascending من true الي false.

لاحظ كذلك ان "Name" هو اسم العمود الذي تريد ترتيبه ويمكنك اختيار اي عمود كما تريد.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

السؤال غير واضح تماماً ..لكن سأفترض أن لديك DataFrame وتريد فرز قيمه تصاعدياً أو تنازلياً. في باندا فإن الأداة الأساسية للفرز هي الدالة sort_values:

Series.sort_values(by,axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last', ignore_index=False, key=None)

حيث أن الوسيط الأول يقبل str أو قائمة من ال str، ويمثل اسم أو قائمة أسماء للفرز على أساسها، إذا كان المحور= 0 أو "الفهرس" فقد يحتوي على مستويات الفهرس و / أو تسميات الأعمدة، إذا كان المحور 1 أو "الأعمدة" فقد يحتوي على مستويات الأعمدة و / أو تسميات الفهرس. الوسيط الثاني هو المحور الذي سيتم الفرز على أساسه، والوسيط الثالث ascending في حال ضبطه على True سيكون الفرز تصاعدي وإلا تنازلي. الوسيط الرابع inplace في حالة ضبطه على True يتم إجراء التعديل على الداتافريم الأساسي أي لايتم إنشاء نسخة. الوسيط الخامس kind هو  خوارزمية الفرز المتبعة، فكما نعلم هناك العديد من خوارزميات الفرز  وتختلف عن بعضها في التعقيد الزمني للتنفيذ (السرعة) وهناك عدة خوارزميات تدعمها الدالة وهم:{‘quicksort’, ‘mergesort’, ‘heapsort’, ‘stable’} وبشكل افتراضي تكون quicksort . أما الوسيط السادس فهو na_position يحدد المكان الذي سيتم فيه وضع القيمة nan في حال تواجدت في الداتا، ويأخذ وسيطين first أو last، وافتراضياً last. الوسيط السابع ignore_index في حالة ضبطه على True فسيتم تسمية المحور الناتج 0, 1, …, n - 1.  وأخيراً ال key: إذا لم يكن None ، فسيتم تطبيق دالة المفتاح على قيم الداتا قبل الفرز. أي أنه مشابه تماماً للوسيط key الموجود في الدالة sorted:

import pandas as pd
import numpy as np
df = pd.DataFrame({
    'c1': ['A', 'A', 'B', np.nan, 'D', 'C'],
    'c2': [5, 4, 1, 7, 9, 4],
    'c3': [4, 9, 0, 2, 4, 2],
    'c4': ['a', 'B', 'c', 'D', 'e', 'F']

})
df
"""
 	c1 	c2 	c3 	c4
0 	A 	5 	4 	a
1 	A 	4 	9 	B
2 	B 	1 	0 	c
3 	NaN 	7 	2 	D
4 	D 	9 	4 	e
5 	C 	4 	2 	F
"""
# الفرز حسب أول عمود
df.sort_values(by=['c1']) # تصاعدي
"""
c1 	c2 	c3 	c4
0 	A 	5 	4 	a
1 	A 	4 	9 	B
2 	B 	1 	0 	c
5 	C 	4 	2 	F
4 	D 	9 	4 	e
3 	NaN 	7 	2 	D
"""
df.sort_values(by=['c1'])  # تنازلي
df.sort_values(by=['c1'],ascending=False) # تصاعدي
"""
c1 	c2 	c3 	c4
4 	D 	9 	4 	e
5 	C 	4 	2 	F
2 	B 	1 	0 	c
0 	A 	5 	4 	a
1 	A 	4 	9 	B
3 	NaN 	7 	2 	D
"""

وهكذا يمكنك الفرز بالشكل الذي تطلبه وحسب العمود الذي تريده، كما ويمكنك الفرز على أساس عدة أعمدة بالشكل: df.sort_values(by=['col1', 'col2'])

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...