DataFrame هو الهيكل الأساسي لتمثيل البيانات الجدولية في مكتبة pandas، ويمكن تخيله كجدول يحتوي صفوفًا وأعمدة. بعد إنشاء البيانات أو تحميلها، غالبًا تكون أول ثلاث خطوات مفيدة هي: معاينة أول الصفوف باستخدام head()، معرفة عدد الصفوف والأعمدة باستخدام shape، ثم عرض أسماء الأعمدة باستخدام columns.
مثلًا، إذا كانت نتيجة df.shape هي (500, 8) فهذا يعني أن لديك 500 صف و8 أعمدة. أما df.columns فتعرض أسماء الأعمدة، وdf.head() تعرض أول 5 صفوف افتراضيًا دون أن تغيّر البيانات الأصلية.
إذا كان الجدول مخزنًا في متغير اسمه df، فهذه هي الأوامر الثلاثة الأساسية التي سنشرحها. سنستخدم جدول طلاب صغيرًا حتى ترى نتيجة كل أمر بوضوح، ثم نطبّق الفكرة باختصار على بيانات تأتي من ملف CSV دون الدخول في تفاصيل قراءة الملفات.
print(df.head())
print(df.shape)
print(list(df.columns))
{getToc} $title={محتوى المقال}
ما هو DataFrame في pandas؟
DataFrame هو جدول ثنائي الأبعاد داخل pandas: كل صف يمثل سجلًا، وكل عمود يمثل نوعًا من البيانات. يمكن إنشاء DataFrame من قاموس في بايثون أو الحصول عليه بعد قراءة ملف مثل CSV.
في المثال التالي لدينا بيانات طلاب تحتوي الاسم والعمر والمدينة والدرجة:
import pandas as pd
data = {
"name": ["Ali", "Sara", "Omar", "Mona", "Khaled"],
"age": [22, 25, 20, 23, 24],
"city": ["Aden", "Sanaa", "Taiz", "Aden", "Hadramout"],
"score": [88, 91, 76, 95, 82]
}
df = pd.DataFrame(data)
الآن أصبح لدينا DataFrame من 5 صفوف و4 أعمدة، وسنستخدمه في بقية الأمثلة.
فحص DataFrame بسرعة: head وshape وcolumns
| الأمر | وظيفته |
|---|---|
df.head() |
يعرض أول 5 صفوف افتراضيًا. |
df.head(10) |
يعرض أول 10 صفوف. |
df.shape |
يعيد عدد الصفوف والأعمدة بالشكل (rows, columns). |
df.columns |
يعرض أسماء الأعمدة ككائن Index. |
عرض أول الصفوف باستخدام head()
الدالة head() تعرض أول 5 صفوف من DataFrame افتراضيًا. هي مناسبة لأخذ نظرة سريعة على شكل البيانات والقيم الموجودة في بدايتها.
print(df.head())
في مثالنا ستظهر الصفوف الخمسة كلها لأن الجدول يحتوي 5 صفوف فقط:
name age city score
0 Ali 22 Aden 88
1 Sara 25 Sanaa 91
2 Omar 20 Taiz 76
3 Mona 23 Aden 95
4 Khaled 24 Hadramout 82
ولعرض عدد محدد من الصفوف مرّر الرقم إلى head():
print(df.head(3))
name age city score
0 Ali 22 Aden 88
1 Sara 25 Sanaa 91
2 Omar 20 Taiz 76
مهم: استخدام head() لا يحذف بقية الصفوف ولا يعدّل DataFrame الأصلي؛ هو يعرض لك جزءًا من البيانات فقط.
وإذا أردت معاينة نهاية الجدول، توجد الدالة tail() التي تعمل بالطريقة نفسها ولكن مع آخر الصفوف. نذكرها هنا للمقارنة فقط لأنها ليست محور هذا الدرس.
معرفة عدد الصفوف والأعمدة باستخدام shape
shape خاصية Attribute وليست دالة، لذلك تُكتب بدون أقواس:
print(df.shape)
الناتج:
(5, 4)
الرقم الأول هو عدد الصفوف، والرقم الثاني هو عدد الأعمدة. أي أن (5, 4) تعني 5 صفوف و4 أعمدة.
ويمكن استخراج القيمتين مباشرة:
rows, columns_count = df.shape
print("عدد الصفوف:", rows)
print("عدد الأعمدة:", columns_count)
عدد الصفوف: 5
عدد الأعمدة: 4
عرض أسماء الأعمدة باستخدام columns
columns أيضًا خاصية وليست دالة. تستخدمها لمعرفة أسماء الأعمدة الموجودة في الجدول:
print(df.columns)
تعيد df.columns كائنًا من نوع Index يحتوي أسماء الأعمدة. قد يختلف الشكل النصي لتفاصيل هذا الكائن قليلًا حسب إصدار pandas.
ولعرض الأسماء كقائمة بايثون عادية وواضحة:
print(list(df.columns))
['name', 'age', 'city', 'score']
هذه الخطوة مفيدة قبل اختيار الأعمدة لاحقًا؛ لأن اسمًا غير صحيح مثل "Score" بدل "score" قد يؤدي إلى KeyError.
head() Method وshape وcolumns Attributes
هناك فرق صغير مهم للمبتدئ: head() هي Method لذلك تحتاج أقواسًا، بينما shape وcolumns هما Attributes لذلك لا نضع بعدهما أقواسًا.
# صحيح
df.head()
df.shape
df.columns
# خطأ
df.shape()
df.columns()
إذا كتبت df.shape() أو df.columns() فستحاول استدعاء قيمة ليست Method.
هل أحتاج dtypes وinfo() هنا؟
بعد head() وshape وcolumns، قد يكون من المفيد أحيانًا إلقاء نظرة سريعة على أنواع البيانات باستخدام dtypes أو ملخص الجدول باستخدام info(). لكنهما أدوات مساندة في هذا الدرس وليستا النية الأساسية.
print(df.dtypes)
df.info()
dtypes تعرض نوع كل عمود، بينما info() تعرض ملخصًا عن الأعمدة والقيم غير الفارغة والأنواع. عند الانتقال إلى تنظيف البيانات ستحتاج هذه المعلومات أكثر.
ماذا تفعل بعد تحميل Dataset؟
إذا حصلت على DataFrame من ملف باستخدام read_csv()، لا تحتاج إلى شرح خيارات القراءة هنا. يكفي أن تبدأ بالفحص الأولي:
import pandas as pd
df = pd.read_csv("students.csv")
print(df.head())
print(df.shape)
print(list(df.columns))
بهذه الخطوات الثلاث تعرف بسرعة: هل الملف قُرئ بالشكل المتوقع؟ ما حجمه؟ وما أسماء الأعمدة التي ستتعامل معها؟
أخطاء شائعة عند استخدام head وshape وcolumns
1. نسيان الأقواس مع head()
# لا يعرض أول الصفوف
print(df.head)
# الصحيح
print(df.head())
2. كتابة shape() بدل shape
# خطأ
df.shape()
# الصحيح
df.shape
3. كتابة columns() بدل columns
# خطأ
df.columns()
# الصحيح
df.columns
4. الاعتقاد أن head() يغيّر البيانات
head() يعيد لك أول الصفوف للمعاينة فقط. بقية الصفوف تبقى داخل DataFrame كما هي.
ما الخطوة التالية بعد فهم DataFrame؟
بعد أن تعرف شكل الجدول وأسماء أعمدته، تصبح الخطوة الطبيعية هي تعلم اختيار الصفوف والأعمدة وتصفيتها. لهذا انتقل إلى درس اختيار الصفوف والأعمدة في pandas باستخدام loc وiloc.
وإذا كنت تبني أساسك في المجال من البداية، راجع أيضًا تحليل البيانات ببايثون للمبتدئين لفهم مكان pandas ضمن مسار تحليل البيانات.
الخلاصة
DataFrame هو جدول الصفوف والأعمدة الذي ستتعامل معه كثيرًا في pandas. ابدأ فحص أي جدول باستخدام head() لرؤية أول الصفوف، وshape لمعرفة حجمه، وcolumns لمعرفة أسماء الأعمدة.
{alertSuccess} احفظ هذه القاعدة:head()للمعاينة،shapeللحجم، وcolumnsللأسماء. بعد ذلك انتقل إلى اختيار البيانات أو تنظيفها حسب هدفك.
أسئلة شائعة
ما هو DataFrame في pandas؟
DataFrame هو هيكل بيانات جدولي ثنائي الأبعاد في pandas يتكون من صفوف وأعمدة.
ماذا تفعل head()؟
df.head() تعرض أول 5 صفوف افتراضيًا، ويمكن تمرير رقم مثل df.head(10) لتحديد عدد الصفوف.
ما معنى shape في pandas؟
df.shape تعيد زوجًا بالشكل (عدد الصفوف، عدد الأعمدة)، وهي Attribute لذلك لا تحتاج أقواسًا.
كيف أعرف أسماء أعمدة DataFrame؟
استخدم df.columns، أو list(df.columns) إذا أردت أسماء الأعمدة في List عادية.
هل head() تعدّل DataFrame؟
لا. head() تعرض جزءًا من البيانات للمعاينة ولا تحذف بقية الصفوف ولا تعدل الجدول الأصلي.



