• 0

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

لدي بعض البيانات على هيئة dataframe ، وأود ترتيبها بشكل تصاعدي وتنازلي مرة اخري ،كيف يمكن ترتيبها أبجديا بالأسماء؟

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 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'])

 

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


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

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن