الدرس 4 من 8

أساسيات Pandas

الجداول، وأهم مكتبة في تحليل البيانات.

الـ DataFrame

Pandas بتديك جدول اسمه DataFrame: صفوف وأعمدة، وكل عمود ليه اسم ونوع. كل عمود لوحده اسمه Series. تخيله شيت Excel بتتحكم فيه بالكود، فتقدر تكرر نفس التحليل على مليون صف في ثانية.

الداتا اللي هنشتغل عليها

أوردرات متجر أونلاين. اعمل ملف اسمه orders.csv جنب الـ notebook وحط فيه ده (لاحظ إن فيه تقييم ناقص في أوردر 1006):

orders.csv
order_id,date,city,category,product,qty,price,rating
1001,2026-01-05,Cairo,Electronics,Headphones,1,1200,4.5
1002,2026-01-07,Giza,Fashion,T-shirt,3,250,4.0
1003,2026-01-12,Alexandria,Home,Blender,1,1800,3.5
1004,2026-02-02,Cairo,Fashion,Sneakers,1,2200,5.0
1005,2026-02-10,Cairo,Electronics,Power Bank,2,650,4.0
1006,2026-02-15,Mansoura,Home,Kettle,1,900,
1007,2026-03-01,Giza,Electronics,Smart Watch,1,3500,4.5
1008,2026-03-08,Alexandria,Fashion,Jacket,1,1600,3.0
1009,2026-03-20,Cairo,Home,Air Fryer,1,4200,5.0
1010,2026-04-02,Giza,Fashion,T-shirt,2,250,4.5
1011,2026-04-11,Mansoura,Electronics,Headphones,1,1200,4.0
1012,2026-04-25,Cairo,Electronics,Laptop Stand,2,850,3.5

أول ٣ حاجات تعملها مع أي داتا

explore.py
import pandas as pd

pd.set_option("display.max_columns", None)   # show all columns
pd.set_option("display.width", 200)          # don't wrap wide tables
df = pd.read_csv("orders.csv")

print(df.shape)          # (rows, columns)
print(df.head(3))        # first 3 rows
info.py
import pandas as pd

df = pd.read_csv("orders.csv")
df.info()                # column types + how many non-missing values

لاحظ إن عمود rating فيه 11 قيمة بس من 12. كده عرفنا إن فيه قيمة ناقصة من أول نظرة.

describe.py
import pandas as pd

df = pd.read_csv("orders.csv")
print(df[["qty", "price", "rating"]].describe().round(1))   # quick statistics

اختيار أعمدة وصفوف

select.py
import pandas as pd

df = pd.read_csv("orders.csv")

print(df["city"].unique().tolist())         # unique values of one column
print(df[["product", "price"]].head(2))     # several columns -> DataFrame (note [[ ]])

print(df.loc[0, "product"])       # loc  -> by label (row index, column name)
print(df.iloc[-1, 4])             # iloc -> by position (last row, 5th column)

الفلترة

نفس فكرة الـ boolean mask في NumPy. وعشان تجمع شرطين استخدم & (و) و | (أو)، وحط كل شرط بين قوسين.

filter.py
import pandas as pd

df = pd.read_csv("orders.csv")

cairo_big = df[(df["city"] == "Cairo") & (df["price"] > 1000)]
print(cairo_big[["order_id", "product", "price"]])

print(df[df["category"].isin(["Home", "Fashion"])].shape[0], "orders")
⚠ and و or مش هتشتغل هناdf[df["a"] > 1 and df["b"] < 5] هتطلعلك خطأ. في Pandas لازم & و |، والأقواس حوالين كل شرط إجبارية.
الدرس اللي فات