Barcha kurslar Yo'nalishlar Reyting Kirish Ro'yxatdan o'tish

Bu modul Pandas’ning kundalik "ish qurollari": qatorlarni shart bilan ajratish, saralash, guruhlab hisoblash, jadvallarni birlashtirish va sanalar bilan ishlash.

Filtrlash

Asos NumPy’dagidek — mantiqiy niqob:

import pandas as pd

df = pd.DataFrame({
    "mahsulot": ["olma", "non", "sut", "olma", "non"],
    "narx": [12000, 4000, 11000, 13000, 4500],
    "filial": ["A", "A", "B", "B", "B"],
})
df[df["narx"] > 10000]                     # bitta shart
df[(df["narx"] > 4000) & (df["filial"] == "B")]   # ikkita shart
df[df["mahsulot"].isin(["olma", "sut"])]   # ro'yxatga kirish

Uch qat’iy qoida: shartlar & va | bilan bog’lanadi (and/or emas), har bir shart qavsga olinadi, tenglik == bilan tekshiriladi. Qavs unutilsa — TypeError, and yozilsa — ValueError: The truth value of a Series is ambiguous.

Saralash

df.sort_values("narx")                          # o'sish tartibida
df.sort_values("narx", ascending=False)         # kamayish
df.sort_values(["filial", "narx"],
               ascending=[True, False])         # avval filial, ichida narx

sort_values yangi DataFrame qaytaradi — asl jadval joyida qoladi. Saralashdan keyin indeks yorliqlari aralashadi; toza 0,1,2... kerak bo’lsa: .reset_index(drop=True).

Guruhlash va agregatlar

groupby — "bo’l, hisobla, birlashtir" andozasi: qatorlar kalit bo’yicha guruhlarga bo’linadi, har guruhga funksiya qo’llanadi:

df.groupby("mahsulot")["narx"].mean()

Natija:

mahsulot
non      4250.0
olma    12500.0
sut     11000.0
Name: narx, dtype: float64

Bir nechta agregat birdaniga:

df.groupby("filial")["narx"].agg(["count", "sum", "mean"])

Ko’p uchraydigan xato — agregatsiz df.groupby("filial") ni chiqarishga urinish: bu hali natija emas, shunchaki GroupBy obyekti. Guruhlash faqat agregat funksiya (mean, sum, count, agg...) bilan tugallanadi.

Jadvallarni ulash: concat va merge

pd.concat([df1, df2]) pd.merge(df1, df2, on="kalit")
Nima qiladi jadvallarni ustma-ust (yoki yonma-yon) qo’shadi kalit ustun qiymati mos qatorlarni juftlaydi
Qachon tuzilishi bir xil bo’laklarni yig’ishda ikki manbadagi ma’lumotni bog’lashda
Asosiy parametr axis=0/1 how="inner"/"left"/"right"/"outer"
mijozlar = pd.DataFrame({"id": [1, 2, 3], "ism": ["Aziz", "Malika", "Jasur"]})
buyurtma = pd.DataFrame({"id": [1, 1, 3], "summa": [50, 20, 70]})
pd.merge(mijozlar, buyurtma, on="id", how="left")

Natija:

   id     ism  summa
0   1    Aziz   50.0
1   1    Aziz   20.0
2   2  Malika    NaN
3   3   Jasur   70.0

inner — faqat ikkalasida ham bor kalitlar; left — chap jadvalning hamma qatori saqlanadi, mos kelmaganiga NaN yoziladi. Malika buyurtma qilmagan — left bo’lgani uchun qatori NaN bilan qoldi; inner bo’lganda u umuman chiqmasdi.

Sana va vaqt

CSV’dan o’qilgan sana — oddiy matn. Ishlashdan oldin uni sana turiga o’girish shart:

df = pd.DataFrame({"sana": ["2026-01-15", "2026-02-03", "2026-02-20"],
                   "savdo": [100, 150, 120]})
df["sana"] = pd.to_datetime(df["sana"])
df["oy"] = df["sana"].dt.month
df["hafta_kuni"] = df["sana"].dt.day_name()
df.groupby("oy")["savdo"].sum()

.dt — sana ustunining maxsus eshigi: year, month, day, day_name() va boshqalar shu orqali olinadi. Matn holicha qoldirilgan sana bilan taqqoslash ham, guruhlash ham noto’g’ri ishlaydi — info() da ustun turi datetime64 ekanini tekshirib olish odat qiling.

Amaliyot

  1. Yuqoridagi savdo jadvalini yozib, narxi 5000 dan yuqori VA filiali "B" bo’lgan qatorlarni ajratib oling.
  2. Mahsulot bo’yicha guruhlab, har birining eng arzon va eng qimmat narxini bitta agg bilan chiqaring.
  3. Jadvalni avval filial, ichida narx kamayishi bo’yicha saralang va indeksni tiklang.
  4. mijozlar/buyurtma misolini how="inner" bilan takrorlab, left natijasidan farqini yozib tushuntiring.
  5. 6 ta sanali savdo yozuvidan iborat jadval yasab, oylik jami savdoni hisoblang va eng yaxshi oyni toping.

Keyingi dars — modul testi.

Ma’lumotlar bilan ishlash — konspekt

Ma'lumotlar bilan ishlash Maqola

Pandas’da filtrlash, saralash, groupby agregatlari, merge/concat va sana-vaqt bilan ishlash bo’yicha konspekt.

Eslatma yozish uchun saytga kiring.

Resurslar hozircha qo'shilmagan

O'qituvchi dars uchun qo'shimcha materiallarni qo'shganida shu yerda paydo bo'ladi.

Savol berish uchun saytga kiring.

Hozircha savollar yo'q

Bu dars yuzasidan birinchi savolni siz bering.