إضافة الأعمدة وإسقاطها
أضف أعمدة محسوبة جديدة، وأعد تسمية الأعمدة الحالية، وأسقط الأعمدة أو الصفوف غير المطلوبة باستخدام drop().
إضافة الأعمدة وإسقاطها درس مجاني في Pandas & NumPy Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Pandas & NumPy Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Pandas & NumPy Academy 4 دروس في المجموع.
إضافة عمود جديد عبر الإسناد
أبسط طريقة لإضافة عمود هي الإسناد المباشر: df['new_col'] = values. يمكن أن تكون الجهة اليمنى قيمة مفردة (تُعمَّم على جميع الصفوف)، أو قائمة بالطول نفسه، أو مصفوفة NumPy، أو Series من Pandas (تُحاذى حسب الفهرس)، أو تعبيرًا محسوبًا يتضمن أعمدة موجودة. تُضاف الأعمدة الجديدة إلى يمين DataFrame.
import pandas as pd
df = pd.DataFrame({'price': [10.0, 20.0, 15.0], 'qty': [3, 5, 2]})
df['revenue'] = df['price'] * df['qty']
df['currency'] = 'USD'
print(df)هندسة الميزات: الأعمدة المحسوبة
من أكثر عمليات DataFrame شيوعًا إنشاء ميزات مشتقة من الأعمدة الموجودة. يمكنكم حساب المجاميع التراكمية، والنسب، والعلامات، أو ترميز القيم الفئوية في تعبير متجه واحد. تُحدَّث هذه الأعمدة المحسوبة تلقائيًا عند تغيّر الأعمدة المصدر إذا أعدتم حسابها، مما يجعل مسارات هندسة الميزات سهلة التكرار.
import pandas as pd
df = pd.DataFrame({'salary': [50000, 80000, 60000],
'bonus': [5000, 12000, 7000]})
df['total_comp'] = df['salary'] + df['bonus']
df['bonus_pct'] = (df['bonus'] / df['salary'] * 100).round(1)
print(df)استخدام assign() لسلاسل الأساليب
تعيد df.assign(new_col=expression) DataFrame جديدًا مع العمود المضاف من دون تعديل الأصل. وعلى خلاف الإسناد المباشر، تندمج هذه الطريقة طبيعيًا في سلسلة أساليب. يمكنكم إضافة عدة أعمدة في استدعاء واحد، كما يمكن لتعبيرات الأعمدة اللاحقة الإشارة إلى أعمدة سابقة عُرّفت في استدعاء assign() نفسه باستخدام دوال lambda.
import pandas as pd
df = pd.DataFrame({'x': [1, 2, 3], 'y': [4, 5, 6]})
result = (df
.assign(sum_xy=lambda d: d['x'] + d['y'])
.assign(ratio=lambda d: d['x'] / d['sum_xy'])
)
print(result)إعادة تسمية الأعمدة باستخدام rename()
تعيد df.rename(columns={'old': 'new'}) DataFrame جديدًا بأعمدة مُعاد تسميتها. مرّروا قاموسًا لإعادة تسمية أعمدة محددة من دون التأثير في الأعمدة الأخرى. يمكنكم أيضًا إعادة التسمية باستخدام دالة: df.rename(columns=str.upper) لتحويل جميع أسماء الأعمدة إلى أحرف كبيرة. أعيدوا التسمية دائمًا قبل دمج DataFrames من مصادر مختلفة لضمان تطابق أعمدة المفاتيح.
import pandas as pd
df = pd.DataFrame({'a': [1, 2], 'b': [3, 4], 'c': [5, 6]})
renamed = df.rename(columns={'a': 'alpha', 'b': 'beta'})
print(renamed.columns.tolist()) # ['alpha', 'beta', 'c']
# Rename all columns to uppercase
print(df.rename(columns=str.upper).columns.tolist()) # ['A', 'B', 'C']تنظيف أسماء الأعمدة
غالبًا ما تحتوي أسماء الأعمدة الواقعية على مسافات أو محارف خاصة أو حالات أحرف غير متسقة. ومن خطوات المعالجة المسبقة الشائعة توحيدها: إزالة المسافات الزائدة، وتحويلها إلى أحرف صغيرة، واستبدال المسافات بشرطات سفلية. يسهّل ذلك الوصول إلى الأعمدة باستخدام تدوين النقطة، ويتجنب مشكلات الاقتباس في سلاسل الاستعلام الشبيهة باستعلامات SQL.
import pandas as pd
df = pd.DataFrame(columns=['First Name', 'Last Name', 'Email Address'])
df.columns = (df.columns
.str.strip()
.str.lower()
.str.replace(' ', '_', regex=False)
)
print(df.columns.tolist()) # ['first_name', 'last_name', 'email_address']إدراج عمود في موضع محدد
تُدرج df.insert(loc, column, value) عمودًا في الموضع الصحيح loc، وتزيح الأعمدة الأخرى إلى اليمين. يفيد ذلك عندما تريدون ظهور العمود الجديد بجوار الأعمدة المرتبطة به بدلًا من ظهوره في النهاية. تعدّل هذه الدالة DataFrame موضعيًا، بخلاف assign().
import pandas as pd
df = pd.DataFrame({'name': ['A', 'B'], 'score': [80, 90]})
df.insert(1, 'grade', ['B', 'A'])
print(df)
# name grade score
# 0 A B 80
# 1 B A 90حذف الأعمدة باستخدام drop()
تعيد df.drop(columns=['col1', 'col2']) DataFrame جديدًا من دون تلك الأعمدة. وتعمل أيضًا الصيغة الأقدم df.drop(['col1', 'col2'], axis=1)، لكنها أقل وضوحًا. للحذف موضعيًا، مرّروا inplace=True. فضّلوا دائمًا إعادة DataFrame جديد في مسارات المعالجة للحفاظ على الأصل بهدف المقارنة أو التراجع.
import pandas as pd
df = pd.DataFrame({'a': [1,2], 'b': [3,4], 'c': [5,6], 'd': [7,8]})
cleaned = df.drop(columns=['b', 'd'])
print(cleaned.columns.tolist()) # ['a', 'c']حذف الصفوف باستخدام drop()
تزيل df.drop(index=['r1', 'r2']) الصفوف حسب التسمية. وتزيل df.drop([0, 2]) الصفين 0 و2 من فهرس صحيح افتراضي. يُستخدم حذف الصفوف عادةً لإزالة السجلات التالفة المعروفة، أو القيم الشاذة، أو صفوف الاختبار بعد تنظيف البيانات. فضّلوا الفهرسة المنطقية للحذف القائم على الشروط للحفاظ على وضوح الشيفرة.
import pandas as pd
df = pd.DataFrame({'x': [10, 20, 30, 40]}, index=['a', 'b', 'c', 'd'])
trimmed = df.drop(index=['b', 'd'])
print(trimmed)
# x
# a 10
# c 30استخدام pop() لإزالة عمود وإعادته
تزيل df.pop('col') العمود من DataFrame موضعيًا وتعيده في صورة Series. يفيد ذلك عندما تحتاجون إلى استخراج عمود الهدف (التسمية) من مصفوفة الميزات؛ إذ تزيلونه من DataFrame وتحتفظون به منفصلًا لاستخدامه بوصفه المتغير y في نموذج.
import pandas as pd
df = pd.DataFrame({'feature1': [1,2], 'feature2': [3,4], 'target': [0,1]})
y = df.pop('target') # removes column and returns as Series
X = df # remaining features
print(y.tolist()) # [0, 1]
print(X.columns.tolist()) # ['feature1', 'feature2']إعادة ترتيب الأعمدة
لإعادة ترتيب الأعمدة، حدّدوها بالترتيب المطلوب باستخدام df[['col3', 'col1', 'col2']]. في DataFrames الكبيرة التي تريدون فيها نقل بضعة أعمدة فقط، احسبوا الترتيب المطلوب برمجيًا: انقلوا أعمدة الأولوية إلى المقدمة واتركوا بقية الأعمدة تتبعها. وهذه خطوة شائعة في إعداد التقارير قبل التصدير إلى Excel.
import pandas as pd
df = pd.DataFrame({'id': [1,2], 'score': [80,90], 'name': ['A','B']})
# Move 'name' and 'id' to front
cols = ['name', 'id'] + [c for c in df.columns if c not in ['name', 'id']]
df = df[cols]
print(df.columns.tolist()) # ['name', 'id', 'score']تحديث قيم الأعمدة الموجودة
يستخدم تحديث جميع قيم عمود موجود صيغة الإسناد نفسها المستخدمة عند إضافة عمود جديد: df['col'] = new_values. استخدموا df.loc[mask, 'col'] = value لتحديث الصفوف المطابقة لشرط فقط. لا تستخدموا الفهرسة المتسلسلة مطلقًا عند التحديث؛ استخدموا دائمًا .loc لتجنب SettingWithCopyWarning.
import pandas as pd
df = pd.DataFrame({'name': ['Alice', 'Bob', 'Carol'], 'score': [45, 80, 92]})
# Set scores below 50 to 50 (floor)
df.loc[df['score'] < 50, 'score'] = 50
print(df['score'].tolist()) # [50, 80, 92]تحقق سريع
اختبروا مدى فهمكم لإضافة الأعمدة وحذفها في هذا الدرس.
مراجعة الدرس
تعلمتم في هذا الدرس أن الأعمدة الجديدة تُضاف عن طريق الإسناد أو assign() الملائم لسلاسل الأساليب، وأن rename() يغيّر أسماء الأعمدة من دون تعديل البيانات، وأن drop() يزيل الأعمدة أو الصفوف ويعيد DataFrame جديدًا افتراضيًا. نستخدم بعد ذلك head() وtail() وinfo() وdescribe() لإنشاء ملف تعريفي سريع لأي DataFrame.
الأسئلة الشائعة
هل درس «إضافة الأعمدة وإسقاطها» مجاني؟
نعم — نص درس «إضافة الأعمدة وإسقاطها» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Pandas & NumPy Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Pandas & NumPy Academy 4 دروس في المجموع.
ماذا ستتعلم في «إضافة الأعمدة وإسقاطها»؟
أضف أعمدة محسوبة جديدة، وأعد تسمية الأعمدة الحالية، وأسقط الأعمدة أو الصفوف غير المطلوبة باستخدام drop(). تتمرن على Pandas & NumPy Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Pandas & NumPy Academy؟
لا تُشترط خبرة سابقة. Pandas & NumPy Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «إضافة الأعمدة وإسقاطها»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Pandas & NumPy Academy هذا؟
نعم. كل درس في Pandas & NumPy Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- إنشاء DataFrames
- اختيار الأعمدة والصفوف
- إضافة الأعمدة وإسقاطها
- الفحص الأساسي لـ DataFrame