الدرس 4 من 8
أساسيات Pandas
الجداول، وأهم مكتبة في تحليل البيانات.
الـ DataFrame
Pandas بتديك جدول اسمه DataFrame: صفوف وأعمدة، وكل عمود ليه اسم ونوع. كل عمود لوحده اسمه Series. تخيله شيت Excel بتتحكم فيه بالكود، فتقدر تكرر نفس التحليل على مليون صف في ثانية.
الداتا اللي هنشتغل عليها
أوردرات متجر أونلاين. اعمل ملف اسمه orders.csv جنب الـ notebook وحط فيه ده (لاحظ إن فيه تقييم ناقص في أوردر 1006):
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
أول ٣ حاجات تعملها مع أي داتا
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
import pandas as pd df = pd.read_csv("orders.csv") df.info() # column types + how many non-missing values
لاحظ إن عمود rating فيه 11 قيمة بس من 12. كده عرفنا إن فيه قيمة ناقصة من أول نظرة.
import pandas as pd df = pd.read_csv("orders.csv") print(df[["qty", "price", "rating"]].describe().round(1)) # quick statistics
اختيار أعمدة وصفوف
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. وعشان تجمع شرطين استخدم & (و) و | (أو)، وحط كل شرط بين قوسين.
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 لازم & و |، والأقواس حوالين كل شرط إجبارية.