PyDA Course
📖 درس 2 متوسط ⏱ 25 دقيقة ⚡ +100 XP ColabKagglenbviewerBinderDeepnoteGitHub pandas · dataframe · csv · inspection

إنشاء إطارات البيانات

بناء بيانات جدولية ثنائية الأبعاد من القواميس وقوائم السجلات وملفات CSV باستخدام إطارات البيانات pandas DataFrame.

🎯 ماذا ستتعلم:
  • إنشاء إطار بيانات من قاموس من القوائم
  • إنشاء إطار بيانات من قائمة من القواميس
  • قراءة ملف CSV إلى إطار بيانات باستخدام pd.read_csv()
  • فحص إطار البيانات باستخدام head() و info() و describe() و shape

ما هو إطار البيانات DataFrame؟

DataFrame في pandas هو بنية بيانات ثنائية الأبعاد معلّمة ، فكّر فيه كجدول بيانات أو جدول SQL أو قاموس من كائنات Series. كل عمود هو Series، وكل الأعمدة تتشارك نفس الفهرس.

python
import pandas as pd

df = pd.DataFrame({
    "Name": ["Alice", "Bob", "Carol"],
    "Age": [24, 30, 28],
    "Score": [88, 92, 79]
})
print(df)

المخرجات:

    Name  Age  Score
0  Alice   24     88
1    Bob   30     92
2  Carol   28     79

إنشاء إطارات البيانات من مصادر مختلفة

من قاموس من القوائم ، يصبح كل مفتاح اسم عمود:

python
df = pd.DataFrame({
    "City": ["Lagos", "Nairobi", "Cairo"],
    "Population": [15_400_000, 4_400_000, 20_900_000],
    "Country": ["Nigeria", "Kenya", "Egypt"]
})

من قائمة من القواميس ، كل قاموس هو صف:

python
records = [
    {"Name": "Alice", "Score": 88},
    {"Name": "Bob", "Score": 92},
    {"Name": "Carol", "Score": 79},
]
df = pd.DataFrame(records)

من كائن Series ، تتحد كائنات Series المتعددة في أعمدة:

python
names = pd.Series(["Alice", "Bob", "Carol"])
scores = pd.Series([88, 92, 79])
df = pd.DataFrame({"Name": names, "Score": scores})

قراءة ملفات CSV

الطريقة الأكثر شيوعًا لتحميل البيانات الحقيقية هي من ملف CSV:

python
df = pd.read_csv("titanic.csv")

الوسائط المفيدة للدالة read_csv():

python
df = pd.read_csv(
    "data.csv",
    index_col="id",        # use 'id' column as the index
    usecols=["name", "age", "fare"],  # load only these columns
    na_values=["?", ""],   # treat '?' and empty strings as NaN
    dtype={"age": "float"} # force column type
)

في هذه الدورة سنستخدم مجموعة بيانات تيتانيك، المتاحة على العنوان:

python
# titanic.csv ships with the course — load it from the browser file system.
df = pd.read_csv("titanic.csv")

فحص بياناتك

بعد تحميل البيانات، افحصها دائمًا أولًا:

python
df.head()        # first 5 rows
df.tail(3)       # last 3 rows
df.shape          # (rows, columns) — e.g. (891, 12)
df.info()         # column names, non-null counts, dtypes
df.describe()     # statistical summary of numeric columns

طريقة info() مهمة بشكل خاص ، فهي تكشف القيم المفقودة وأنواع البيانات:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 891 entries, 0 to 890
Data columns (total 12 columns):
 #   Column    Non-Null Count  Dtype  
---  ------    --------------  -----  
 0   PassengerId  891 non-null   int64  
 1   Survived     891 non-null   int64  
 2   Pclass       891 non-null   int64  
 3   Name         891 non-null   object 
 4   Age          714 non-null   float64
 5   SibSp        891 non-null   int64  
 ...

لاحظ أن العمود Age يحتوي 714 قيمة غير فارغة من أصل 891 ، أي أن هناك 177 قيمة مفقودة. تنظيف هذه البيانات مهارة أساسية ستتعلمها لاحقًا.

الوصول إلى الأعمدة

بمجرد امتلاكك إطار بيانات، يمكنك الوصول إلى الأعمدة ككائنات Series:

python
print(df["Age"])       # returns a Series
print(df.Age)          # dot notation also works (if column name has no spaces)

حدّد أعمدة متعددة بتمرير قائمة:

python
df[["Name", "Age"]]

جرّب بنفسك

أنشئ إطار بيانات يمثل ثلاثة موظفين بأعمدة للاسم (Name) والقسم (Department) والراتب (Salary). اطبع إطار البيانات، ثم اعرض عمودي الاسم والراتب فقط.

python
import pandas as pd

employees = pd.DataFrame({
    "Name": ["Amina", "Kofi", "Zara"],
    "Department": ["Engineering", "Marketing", "Engineering"],
    "Salary": [95000, 72000, 88000]
})
print(employees)
print(employees[["Name", "Salary"]])

خلاصات رئيسية

  • إطار البيانات DataFrame جدول بصفوف معلّمة (الفهرس) وأعمدة معلّمة
  • القواميس من القوائم وقوائم القواميس هي أكثر طرق الإنشاء شيوعًا
  • pd.read_csv() يحمّل البيانات الخارجية ، استخدم index_col و usecols و na_values للتحكم
  • افحص دائمًا البيانات الجديدة بـ head() و info() و describe() قبل التحليل

تحدي التطبيق

حمّل مجموعة بيانات تيتانيك من العنوان أعلاه. كم عدد الصفوف والأعمدة؟ ما أسماء الأعمدة؟ كم عدد الأعمدة التي تحتوي قيمًا مفقودة؟ استخدم info() لمعرفة ذلك.

اختبار سريع +10 XP

1. ما هو إطار بيانات DataFrame في pandas؟

2. كيف تنشئ إطار بيانات من قاموس؟

3. ماذا يُرجع df.shape؟

pandasdataframecsvinspection