ما هو DataFrame في pandas؟ شرح head وshape وcolumns بالأمثلة

فهم DataFrame وعرض أول الصفوف باستخدام pandas في بايثون

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.

في المثال التالي لدينا بيانات طلاب تحتوي الاسم والعمر والمدينة والدرجة:

شرح مكونات DataFrame من صفوف وأعمدة وindex في pandas
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() التي تعمل بالطريقة نفسها ولكن مع آخر الصفوف. نذكرها هنا للمقارنة فقط لأنها ليست محور هذا الدرس.

استخدام head وtail لعرض أول وآخر الصفوف في pandas

معرفة عدد الصفوف والأعمدة باستخدام 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.

معرفة عدد الصفوف والأعمدة وأنواع البيانات في DataFrame

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 للمبتدئين

ما الخطوة التالية بعد فهم 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() تعرض جزءًا من البيانات للمعاينة ولا تحذف بقية الصفوف ولا تعدل الجدول الأصلي.

إرسال تعليق

أحدث أقدم