IlmHamroh
Data Science va sun'iy intellekt/Kirish Data Science6/8-dars17 daqiqa
Mundarija (22)

1.6-dars: Birinchi tahlil (mini loyiha)

1-QISM — KIRISH: DATA SCIENCE · 6-dars


1. Kirish va motivatsiya

Nazariyani bildik — endi birinchi haqiqiy tahlilni qilamiz. Bu dars kichik ma'lumot to'plamini olib, uni uchdan oxirigacha tahlil qiladi: yuklash, ko'rish, tozalash, savol berish, javob topish. Bu — CRISP-DM 1.4-bob ni amaliyotda ko'rish. Hech qanday murakkab model yo'q — faqat pandas bilan ma'lumotni tushunish va undan oddiy xulosa chiqarish. Aynan shu — Data Scientist'ning kundalik ishining yuragi: ma'lumotga savol berib, javobni topish. Bu kichik loyiha butun jarayonni "kichraytirilgan" holda ko'rsatadi — keyingi qismlarda har bosqichni chuqurlashtiramiz, lekin bugun to'liq tsiklni bir marta ko'rasiz. Birinchi tahlil — nazariyadan amaliyotga o'tish.

Birinchi tahlil — kichik ma'lumotni uchdan oxirigacha tahlil qilish (mini CRISP-DM): yuklash (pandas — DataFrame), ko'rish (head, info, describe — ma'lumotni tanish), tozalash (yetishmayotgan, xato), savol (nima bilmoqchimiz), tahlil (guruhlash, filtrlash, statistika), xulosa (javob). Foydalanish: har Data Science loyihasi, ma'lumotni tushunish. Bu 1.4 (CRISP-DM), 4-qism (Pandas) ni amaliyotda birlashtiradi. Bu 1.4, 9-qism (EDA) bilan bog'liq. Birinchi tahlil — yukla, ko'r, tozala, savol, javob. Mini tsikl. Amaliyot.

Real vaziyat. Do'kon egasi: "Qaysi mahsulot eng ko'p daromad keltiradi? Qaysi shaharda yaxshi sotiladi?". Data Scientist savdo ma'lumotini oldi (pandas — DataFrame), ko'rdi (head — dastlabki qatorlar, describe — statistika), tozaladi (bo'sh narxlar), guruhladi (mahsulot bo'yicha daromad — groupby), saraladi (eng yuqori). Javob: "A mahsuloti eng ko'p daromad, Toshkentda yaxshi sotiladi". Do'kon egasi shu asosda qaror qildi (A ni ko'proq buyurtma). Model kerak bo'lmadi — oddiy tahlil yetdi. Birinchi tahlil — savolga javob.

Bu darsda birinchi tahlilni qilamiz.

Bu darsda:

  • Ma'lumotni yuklash va ko'rish
  • Tozalash va savol berish
  • Guruhlash va tahlil
  • Xulosa chiqarish
  • To'liq tsikl (mini loyiha)
  • Tahlil amaliyoti
  • Tahlil tuzoqlari
  • Amaliy: birinchi tahlil modeli

ℹ Misollar real pandas bilan (deterministik ma'lumot) to'liq tahlilni ko'rsatadi.


2. Nazariya — chuqur tushuntirish

2.1. Ma'lumotni yuklash va ko'rish

Avval ma'lumotni tanish:

python
import pandas as pd

df = pd.read_csv("savdo.csv")   # yuklash (yoki DataFrame)

df.head()        # dastlabki 5 qator (ko'rinish)
df.info()        # ustunlar, turlar, yetishmayotgan
df.describe()    # raqamli statistika (o'rtacha, min, max)
df.shape         # (qatorlar, ustunlar)

Ma'lumotni yuklash va ko'rish — tahlilning birinchi qadami: yuklash (pd.read_csv — CSV → DataFrame, yoki API/baza — 7-qism), ko'rish (head — dastlabki qatorlar, info — ustunlar/turlar/yetishmayotgan, describe — raqamli statistika, shape — o'lcham). Sabab: ma'lumotni tanimasdan tahlil qilib bo'lmaydi (nima bor? qanday tur? qancha?); ko'rish ma'lumotni tushunadi (CRISP-DM 2-bosqich — ma'lumot tushunish 1.4). head (namuna), info (tuzilish), describe (statistika) — birinchi nazar. Bu EDA boshlanishi (9-qism). Yuklash/ko'rish — read_csv, head, info, describe. Birinchi qadam. Ma'lumotni tanish.

2.2. Tozalash va savol berish

Toza ma'lumot + aniq savol:

python
# TOZALASH (asosiy):
df.isnull().sum()          # yetishmayotgan qiymatlar (qaysi ustun)
df = df.dropna()            # yoki to'ldirish (6-qism)
df = df.drop_duplicates()   # dublikat

# SAVOL (aniq maqsad):
# "Qaysi mahsulot eng ko'p daromad keltiradi?"
# → guruhlash + yig'indi + saralash

Tozalash va savol berish — tahlilning ikki muhim qadami: tozalash (isnull().sum() — yetishmayotgan qaysi ustun, dropna/to'ldirish, drop_duplicates — dublikat; iflos ma'lumot → noto'g'ri tahlil — 6-qism), savol berish (aniq maqsad — "qaysi mahsulot eng ko'p daromad?"; noaniq savol → noaniq javob — 1.4 biznes tushunish). Sabab: tozalash to'g'ri natija uchun (garbage in, garbage out — 1.1); savol yo'nalish uchun (aniq savol → aniq tahlil). Bu ikki — CRISP-DM 1-3 bosqichlar (biznes savol + ma'lumot tayyorlash). Yaxshi savol aniq va o'lchanadigan (eng ko'p daromad — hisoblanadi). Tozalash/savol — toza ma'lumot + aniq maqsad. To'g'ri natija. Yo'nalish.

2.3. Guruhlash va tahlil

Ma'lumotdan javob chiqarish:

python
# GURUHLASH (guruh bo'yicha hisoblash):
daromad = df.groupby("mahsulot")["narx"].sum()
# har mahsulot bo'yicha jami daromad

# SARALASH (eng yuqori):
top = daromad.sort_values(ascending=False)

# FILTRLASH (shart bo'yicha):
toshkent = df[df["shahar"] == "Toshkent"]

Guruhlash va tahlil — ma'lumotdan javob chiqarish: guruhlash (groupby — guruh bo'yicha hisoblash: har mahsulot daromadi = groupby("mahsulot")["narx"].sum()), saralash (sort_values — eng yuqori/pasti), filtrlash (df[shart] — shart bo'yicha: df[df["shahar"]=="Toshkent"]), agregatsiya (sum, mean, count — yig'indi/o'rtacha/son). Sabab: savolga javob ma'lumotni qayta ishlashdan keladi (guruhlash — "har mahsulot", saralash — "eng ko'p", filtr — "faqat Toshkent"); bu pandas asosiy amallari (4-5-qism). Guruhlash kuchli (murakkab savolga javob — har guruh statistika). Guruhlash/tahlil — groupby, sort, filter, agregat. Javob. Pandas kuchi.

2.4. Xulosa chiqarish

Tahlildan qaror:

python
# XULOSA — ma'lumotdan gaplashish:
# "A mahsuloti eng ko'p daromad (5000)"
# "Toshkent eng yaxshi bozor (60% savdo)"
# "Dushanba eng past kun (chegirma kerak?)"

# → qaror: A ni ko'proq, Toshkentga e'tibor, Dushanba aksiya

Xulosa chiqarish — tahlildan qaror: natijani tushunarli qilish ("A mahsuloti eng ko'p daromad", "Toshkent eng yaxshi bozor") va qarorga aylantirish ("A ni ko'proq buyurt", "Toshkentga e'tibor"). Sabab: tahlil o'zi maqsad emas (raqamlar — vosita); maqsad — qaror (biznes/ilm foydasi — 1.1); xulosa ma'lumotni hikoyaga aylantiradi (raqam → ma'no → qaror). Bu CRISP-DM oxiri (baholash, joriy etish — 1.4). Xulosa aniq va amaliy ("A yaxshi" — mavhum; "A ni 20% ko'proq buyurt" — amaliy). Muhim: muloqot (natijani tushuntirish — 1.1). Xulosa — natija → ma'no → qaror. Amaliy. Muloqot.

2.5. To'liq tsikl (mini loyiha)

Boshidan oxirigacha:

MINI LOYIHA (uchdan oxirigacha):
   1. YUKLA        → pd.read_csv (ma'lumot)
   2. KO'R         → head, info, describe (tanish)
   3. TOZALA       → dropna, drop_duplicates (toza)
   4. SAVOL        → "qaysi mahsulot eng ko'p?"
   5. TAHLIL       → groupby, sort (javob)
   6. XULOSA       → "A eng ko'p → ko'proq buyurt"

   → CRISP-DM kichraytirilgan (model yo'q, tahlil yetdi)

To'liq tsikl (mini loyiha) — boshidan oxirigacha: yukla → ko'r → tozala → savol → tahlil → xulosa. Bu CRISP-DM kichraytirilgan (1.4 — model bosqichisiz, chunki oddiy tahlil yetadi). Sabab: har Data Science ishi shu tsikl (kichik yoki katta — bir xil qadamlar); mini loyiha butun jarayonni bir marta ko'rsatadi (nazariya → amaliyot). Muhim: model har doim kerak emas (oddiy tahlil — guruhlash, saralash — ko'p savolga javob beradi; model faqat bashorat uchun); ko'p biznes savoli tahlil bilan hal bo'ladi (kim, nima, qancha — model emas). To'liq tsikl — yukla → xulosa. Mini CRISP-DM. Model doim emas.

2.6. Tahlil amaliyoti

Birinchi tahlil amaliyoti: avval ko'r (head, info, describe — ma'lumotni tanish); tozala (yetishmayotgan, dublikat — 6-qism); aniq savol (o'lchanadigan — "eng ko'p daromad"); guruhlash (groupby — savolga mos); saralash (eng yuqori/pasti); filtr (shart — "faqat X"); xulosa (raqam → qaror, amaliy); muloqot (tushuntirish); model doim emas (oddiy tahlil ko'p savolga javob). Tuzoqlar: ko'rmasdan tahlil (ma'lumot noma'lum), tozalamasdan (iflos → noto'g'ri), noaniq savol (noaniq javob), model'ga yugurish (tahlil yetadi), xulosasiz (raqamlar — qaror yo'q). Amaliyot — ko'r, tozala, savol, guruhlash, xulosa. Mini tsikl.

2.7. Tahlil tuzoqlari

Birinchi tahlil asosiy tuzoqlari: ko'rmasdan tahlil (head/info o'tkazib — ma'lumot noma'lum, xato tur/qiymat; avval ko'r); tozalamaslik (yetishmayotgan/dublikat — noto'g'ri natija, masalan bo'sh narxlar yig'indini buzadi; tozala); noaniq savol ("ma'lumotga qarayapman" — yo'nalishsiz; aniq savol); darhol model (oddiy tahlil yetganda model'ga yugurish — ortiqcha; tahlil avval); xulosasiz (raqamlar chiqardi, qaror yo'q — foydasiz; xulosa/qaror); noto'g'ri agregatsiya (o'rtacha kategorik — bema'ni 1.3; mos amal); outlier e'tiborsiz (bir katta qiymat o'rtachani buzadi — 1.5; median/tekshir). Sabab: tahlil tuzilgan bo'lishi kerak (ko'r → tozala → savol → javob); tartibsiz — noto'g'ri/foydasiz. Yechim: ko'r, tozala, aniq savol, xulosa. Tuzoqlar — ko'rmas, tozalamas, noaniq, xulosasiz.

2.8. Birinchi tahlil — savolga javob berish san'ati

Birinchi tahlil asosiy g'oyasi — savolga javob berish san'ati: Data Science asosi — ma'lumotga savol berib, undan javob topish (kim, nima, qancha, qaysi); bu murakkab model emas, oddiy tahlil (yukla, ko'r, tozala, guruhlash, xulosa). Mini loyiha CRISP-DM 1.4-bob ni kichraytirilgan ko'rsatadi (butun tsikl bir marta) — nazariyadan amaliyotga o'tish. Ko'p biznes savoli tahlil bilan hal bo'ladi (model kerak emas — kim eng ko'p, qaysi shahar); model faqat bashorat uchun (kelajak — kim ketadi). Bu 4-5-qism (Pandas) uchun poydevor (har amal — head/groupby/sort — keyin chuqurlashadi) va butun kurs uchun ramka (savol → javob). Birinchi tahlil — savol → javob (tahlil, model emas). San'at. Mini tsikl. Poydevor.


3. Tez ma'lumotnoma

MINI LOYIHA (uchdan oxirigacha):

1. YUKLA:   df = pd.read_csv("fayl.csv")
2. KO'R:    df.head() · df.info() · df.describe() · df.shape
3. TOZALA:  df.isnull().sum() · df.dropna() · df.drop_duplicates()
4. SAVOL:   "qaysi mahsulot eng ko'p daromad?"
5. TAHLIL:  df.groupby("mahsulot")["narx"].sum().sort_values(ascending=False)
   FILTR:   df[df["shahar"] == "Toshkent"]
6. XULOSA:  "A eng ko'p → ko'proq buyurt" (raqam → qaror)

QOIDA: avval ko'r · tozala · aniq savol · guruhlash · xulosa
       (model doim emas — tahlil ko'p savolga javob)

Birinchi tahlil xulosasi

Birinchi tahlil — savolga javob (mini CRISP-DM, model emas)
Yuklash/ko'rish — head, info, describe (ma'lumotni tanish)
Tozalash/savol — toza ma'lumot + aniq maqsad
Guruhlash/tahlil — groupby, sort, filter (javob)
Xulosa — raqam → ma'no → qaror (amaliy, muloqot)

4. Batafsil misollar

Misollar real pandas bilan (deterministik ma'lumot) to'liq tahlilni ko'rsatadi.

Misol 1 — Yuklash va ko'rish

python
"""Yuklash va ko'rish: ma'lumotni tanish (real pandas)."""

import pandas as pd


def malumot() -> pd.DataFrame:
    return pd.DataFrame({
        "mahsulot": ["A", "B", "A", "C", "B", "A"],
        "shahar": ["Toshkent", "Samarqand", "Toshkent", "Buxoro", "Toshkent", "Samarqand"],
        "narx": [100, 200, 150, 300, 250, 120],
    })


def main() -> None:
    df = malumot()

    print("=== 1. head (dastlabki qatorlar) ===")
    print(df.head(3).to_string(index=False))

    print("\n=== 2. shape (o'lcham) ===")
    print(f"  qatorlar: {df.shape[0]}, ustunlar: {df.shape[1]}")

    print("\n=== 3. describe (raqamli statistika) ===")
    print(f"  narx o'rtacha: {df['narx'].mean():.0f}")
    print(f"  narx min-max: {df['narx'].min()}-{df['narx'].max()}")

    print("\n=== 4. ustun turlari ===")
    print(f"  mahsulot: {df['mahsulot'].dtype} (kategorik)")
    print(f"  narx: {df['narx'].dtype} (raqamli)")
    print("  ⭐ Avval ko'r (ma'lumotni tanish)")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. head (dastlabki qatorlar) ===
mahsulot    shahar  narx
       A  Toshkent   100
       B Samarqand   200
       A  Toshkent   150

=== 2. shape (o'lcham) ===
  qatorlar: 6, ustunlar: 3

=== 3. describe (raqamli statistika) ===
  narx o'rtacha: 187
  narx min-max: 100-300

=== 4. ustun turlari ===
  mahsulot: str (kategorik)
  narx: int64 (raqamli)
  ⭐ Avval ko'r (ma'lumotni tanish)

Nima ko'rsatdi: 2.1-bo'lim.

Misol 2 — Tozalash

python
"""Tozalash: yetishmayotgan va dublikat (real pandas)."""

import pandas as pd
import numpy as np


def main() -> None:
    df = pd.DataFrame({
        "mahsulot": ["A", "B", "A", "A", "C"],
        "narx": [100, np.nan, 150, 100, 300],   # bitta bo'sh
    })
    # dublikat qator: A,100 ikki marta

    print("=== 1. Boshlang'ich ===")
    print(f"  qatorlar: {len(df)}")

    print("\n=== 2. Yetishmayotgan (isnull) ===")
    print(f"  bo'sh narx: {int(df['narx'].isnull().sum())} ta")

    print("\n=== 3. dropna (bo'shni o'chirish) ===")
    df2 = df.dropna()
    print(f"  qatorlar: {len(df2)}")

    print("\n=== 4. drop_duplicates ===")
    df3 = df2.drop_duplicates()
    print(f"  qatorlar: {len(df3)} (dublikat o'chdi)")
    print("  ⭐ Tozalash — toza ma'lumot (to'g'ri natija)")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. Boshlang'ich ===
  qatorlar: 5

=== 2. Yetishmayotgan (isnull) ===
  bo'sh narx: 1 ta

=== 3. dropna (bo'shni o'chirish) ===
  qatorlar: 4

=== 4. drop_duplicates ===
  qatorlar: 3 (dublikat o'chdi)
  ⭐ Tozalash — toza ma'lumot (to'g'ri natija)

Nima ko'rsatdi: 2.2-bo'lim.

Misol 3 — Guruhlash va saralash (savolga javob)

python
"""Guruhlash: qaysi mahsulot eng ko'p daromad (real pandas)."""

import pandas as pd


def main() -> None:
    df = pd.DataFrame({
        "mahsulot": ["A", "B", "A", "C", "B", "A"],
        "narx": [100, 200, 150, 300, 250, 120],
    })

    print("=== 1. Savol: qaysi mahsulot eng ko'p daromad? ===")

    print("\n=== 2. Guruhlash (mahsulot bo'yicha yig'indi) ===")
    daromad = df.groupby("mahsulot")["narx"].sum()
    for mahsulot, summa in daromad.items():
        print(f"  {mahsulot}: {summa}")

    print("\n=== 3. Saralash (eng yuqori) ===")
    top = daromad.sort_values(ascending=False)
    print(f"  tartib: {top.index.tolist()}")

    print("\n=== 4. Javob ===")
    print(f"  eng ko'p daromad: {top.index[0]} ({top.iloc[0]})")
    print("  ⭐ Guruhlash + saralash → savolga javob")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. Savol: qaysi mahsulot eng ko'p daromad? ===

=== 2. Guruhlash (mahsulot bo'yicha yig'indi) ===
  A: 370
  B: 450
  C: 300

=== 3. Saralash (eng yuqori) ===
  tartib: ['B', 'A', 'C']

=== 4. Javob ===
  eng ko'p daromad: B (450)
  ⭐ Guruhlash + saralash → savolga javob

Nima ko'rsatdi: 2.3-bo'lim.

Misol 4 — To'liq tsikl (mini loyiha)

python
"""To'liq tsikl: yukla → tozala → tahlil → xulosa (real pandas)."""

import pandas as pd


def main() -> None:
    # 1. YUKLA
    df = pd.DataFrame({
        "shahar": ["Toshkent", "Samarqand", "Toshkent", "Buxoro", "Toshkent"],
        "narx": [100, 200, 150, 300, 250],
    })
    print("=== 1. Yukla + ko'r ===")
    print(f"  {len(df)} qator, ustunlar: {list(df.columns)}")

    # 2. TAHLIL (savol: qaysi shahar eng ko'p savdo?)
    print("\n=== 2. Savol: eng yaxshi bozor? ===")
    savdo = df.groupby("shahar")["narx"].sum().sort_values(ascending=False)
    for shahar, summa in savdo.items():
        print(f"  {shahar}: {summa}")

    # 3. XULOSA
    print("\n=== 3. Xulosa ===")
    eng = savdo.index[0]
    ulush = savdo.iloc[0] / savdo.sum() * 100
    print(f"  {eng} eng yaxshi bozor ({ulush:.0f}% savdo)")

    print("\n=== 4. Qaror ===")
    print(f"  {eng}ga ko'proq e'tibor (marketing, zaxira)")
    print("  ⭐ To'liq tsikl — savol → javob → qaror (model yo'q)")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. Yukla + ko'r ===
  5 qator, ustunlar: ['shahar', 'narx']

=== 2. Savol: eng yaxshi bozor? ===
  Toshkent: 500
  Buxoro: 300
  Samarqand: 200

=== 3. Xulosa ===
  Toshkent eng yaxshi bozor (50% savdo)

=== 4. Qaror ===
  Toshkentga ko'proq e'tibor (marketing, zaxira)
  ⭐ To'liq tsikl — savol → javob → qaror (model yo'q)

Nima ko'rsatdi: 2.5-bo'lim.


5. To'g'ri va noto'g'ri tushunishlar

Noto'g'ri fikr To'g'risi
"Darhol tahlil" Avval ko'r (head, info)
"Tozalash keyin" Avval tozala (iflos → noto'g'ri)
"Har ish model kerak" Tahlil ko'p savolga javob
"Savol keraksiz" Aniq savol (yo'nalish)
"Raqamlar yetadi" Xulosa → qaror (amaliy)
"groupby murakkab" Savolga javob (kuchli)
"O'rtacha doim to'g'ri" Mos amal (kategorik/outlier)
"Tahlil = model" Tahlil (kim/nima), model (bashorat)

6. Keng tarqalgan xatolar va yechimlari

1. Ko'rmasdan tahlil

python
df.groupby(...)   # ma'lumot noma'lum (xato tur/qiymat)        # ⚠️
df.head(); df.info()   # avval ko'r                             # ✅

2. Tozalashsiz

python
df["narx"].sum()   # bo'sh qiymatlar (noto'g'ri)               # ⚠️
df.dropna()["narx"].sum()   # tozalab                           # ✅

3. Model'ga yugurish

python
# "eng ko'p mahsulot" uchun ML model (ortiqcha)                # ⚠️
df.groupby("mahsulot").sum()   # tahlil yetadi                  # ✅

4. Noaniq savol

python
# "ma'lumotga qarayapman" (yo'nalishsiz)                       # ⚠️
# "qaysi mahsulot eng ko'p daromad?" (aniq)                     # ✅

5. Xulosasiz

python
df.groupby(...).sum()   # raqamlar (qaror yo'q)                # ⚠️
# "A eng ko'p → ko'proq buyurt" (qaror)                         # ✅

6. Noto'g'ri agregatsiya

python
df.groupby("shahar")["shahar_kodi"].mean()   # kodi o'rtachasi # ⚠️
df.groupby("shahar")["narx"].sum()   # mos amal                # ✅

7. Outlier e'tiborsizlik

python
df["narx"].mean()   # bir katta qiymat buzadi                  # ⚠️
df["narx"].median()   # yoki outlier tekshir 1.5-bob             # ✅

7. Integratsiya — bu bilim qayerda kerak bo'ladi

  • 1.4-dars (o'tilgan): CRISP-DM (bu — amaliyoti)
  • 4-qism: Pandas asoslari (head, groupby)
  • 5-qism: Pandas chuqur (guruhlash)
  • 9-qism: EDA (razvedka tahlili)
  • 6-qism: Tozalash (chuqur)

8. Eng yaxshi amaliyotlar

  1. Avval ko'r (head, info, describe).

  2. Tozala (yetishmayotgan, dublikat).

  3. Aniq savol (o'lchanadigan — yo'nalish).

  4. Guruhlash (savolga mos — groupby).

  5. Xulosa → qaror (amaliy, muloqot).

  6. Model doim emas (tahlil ko'p savolga javob).

  7. Mos agregatsiya (kategorik/outlier ehtiyot).

  8. To'liq tsikl (yukla → xulosa — tartibli).


9. Amaliy topshiriq

Vazifa 1: Bashorat qiling

python
1.  # birinchi qadam?
2.  # head nima?
3.  # info nima?
4.  # describe nima?
5.  # tozalash nima?
6.  # isnull nima?
7.  # savol nega?
8.  # groupby nima?
9.  # sort_values nima?
10. # filter qanday?
11. # xulosa nima?
12. # model doim kerakmi?
Javoblar
  1. Yuklash + ko'rish (ma'lumotni tanish)
  2. Dastlabki qatorlar (ko'rinish)
  3. Ustunlar, turlar, yetishmayotgan
  4. Raqamli statistika (o'rtacha, min, max)
  5. Yetishmayotgan/dublikat o'chirish
  6. Bo'sh qiymatlarni topish
  7. Aniq yo'nalish (aniq javob)
  8. Guruh bo'yicha hisoblash
  9. Saralash (eng yuqori/past)
  10. df[shart] (shart bo'yicha)
  11. Raqam → qaror (amaliy)
  12. Yo'q (tahlil ko'p savolga javob)

Vazifa 2: Xatolarni tuzating

python
1.  df.groupby(...)   # ko'rmasdan

2.  df["narx"].sum()   # tozalashsiz

3.  # "eng ko'p" uchun ML model

4.  # "ma'lumotga qarayapman"

5.  df.groupby(...).sum()   # xulosasiz
Javoblar
python
1.  df.head(); df.info() (avval)

2.  df.dropna()["narx"].sum()

3.  df.groupby().sum() (tahlil yetadi)

4.  "qaysi mahsulot eng ko'p?"

5.  "A eng ko'p → qaror"

Vazifa 3: Ko'rish

Modellang:

  1. head
  2. info
  3. describe
  4. Tanish

Vazifa 4: Tozalash

Modellang:

  1. isnull
  2. dropna
  3. drop_duplicates
  4. Toza

Vazifa 5: Tahlil

Modellang:

  1. groupby
  2. sort
  3. filter
  4. Javob

Vazifa 6: Xulosa

Modellang:

  1. Raqam
  2. Ma'no
  3. Qaror
  4. Muloqot

Vazifa 7: O'ylash

Ko'pchilik yangi Data Scientist "model qurish" ni maqsad deb o'ylaydi, lekin ko'p biznes savoli oddiy tahlil (guruhlash, saralash) bilan hal bo'ladi — model kerak emas. Nima uchun "eng oddiy yechim" (tahlil) ko'pincha "murakkab yechim" (ML model)dan yaxshiroq, va nega tajribasiz odamlar murakkablikni ortiqcha qadrlaydi?

Javob

Qisqa javob: "Eng oddiy yechim" ko'pincha yaxshiroq, chunki: oddiy tahlil (guruhlash, saralash) tushunarli (natija aniq — "A eng ko'p"), tez (bir necha qator kod), ishonchli (kam xato), tushuntiriladi (biznes egasi tushunadi); murakkab model (ML) — noaniq (qora quti), sekin (qurish/sozlash), xatoga moyil (overfitting), tushuntirish qiyin. Agar oddiy yechim savolga javob bersa — murakkablik ortiqcha (foydasiz murakkablik — 30.16 Python kursi, YAGNI). "Nega oddiy yaxshiroq": (1) maqsad — javob (murakkablik emas); oddiy tahlil javob bersa — yetadi; (2) tushunarli — biznes qaror uchun natija tushunilishi kerak (guruhlash — aniq, model — qora quti); (3) kam xato — oddiy kod kam buziladi (model — ko'p xato manbai: overfitting, noto'g'ri feature); (4) tez/arzon — tahlil daqiqalar, model kunlar. "Nega tajribasiz murakkablikni qadrlaydi": (a) murakkablik = aql xayoli — "ML model qurdim" ta'sirli, "guruhladim" oddiy tuyuladi (lekin ikkinchisi yetsa — yaxshiroq); (b) yangi vositani ishlatish istagi — ML o'rgandim → ishlataman (bolg'a bor → hamma narsa mix); (c) muammoni tushunmaslik — oddiy yechimni ko'rmaydi (murakkabga yuguradi); (d) glamur — ML jozibali (media, trend), tahlil zerikarli. Lekin usta eng oddiy yetadigan yechimni tanlaydi (murakkablik faqat zarurat — bashorat kerak bo'lsa model). Bu umumiy muhandislik tamoyili: soddalik afzal (Occam ustarasi — 27-qism); murakkablik faqat kerak bo'lganda (foyda > narx); tajriba — oddiyni qadrlash (murakkablik oson, soddalik qiyin). Saboqlar: eng oddiy yetadigan yechim (murakkablik ortiqcha); tahlil ko'p savolga javob (model faqat bashorat); tajribasiz murakkablikni qadrlaydi (glamur, vosita istagi); usta soddalikni tanlaydi (tushunarli, tez, ishonchli). Misolda: "eng ko'p mahsulot" — groupby (oddiy), ML emas (ortiqcha).

1. Nega oddiy yaxshiroq

  • Maqsad — javob (murakkablik emas)
  • Tushunarli (biznes tushunadi, model qora quti)
  • Kam xato (oddiy kod — kam buziladi)
  • Tez/arzon (daqiqa vs kun)

2. Nega tajribasiz murakkablikni qadrlaydi

  • Murakkablik = aql xayoli ("ML qurdim" ta'sirli)
  • Yangi vosita istagi (bolg'a → mix)
  • Muammoni tushunmaslik (oddiyni ko'rmas)
  • Glamur (ML jozibali, tahlil zerikarli)

3. Oddiy vs murakkab

Jihat Oddiy (tahlil) Murakkab (ML)
Tushunarli Ha (aniq) Yo'q (qora quti)
Tezlik Daqiqa Kun
Xato Kam Ko'p
Qachon Javob yetsa Bashorat kerak

4. Soddalik afzal (Occam)

Murakkablik faqat zarurat (foyda > narx). Usta oddiyni tanlaydi (murakkablik oson, soddalik qiyin).

5. Saboqlar

  1. Eng oddiy yetadigan yechim (murakkablik ortiqcha)
  2. Tahlil ko'p savolga javob (model bashorat)
  3. Tajribasiz murakkablikni qadrlaydi (glamur)
  4. Usta soddalikni tanlaydi (tushunarli, tez)

6. Xulosa

  1. Oddiy yaxshiroq (tushunarli, tez, ishonchli)
  2. Model doim emas (tahlil ko'p savolga)
  3. Murakkablik faqat zarurat (bashorat)
  4. Soddalikni tanla (usta belgisi)

Nimani mustahkamlaydi: 2.5, 2.8-bo'limlar.


Xulosa

Bu darsda birinchi tahlilni qildik.

Eng muhim uch fikr:

  1. Yuklash, ko'rish, tozalash, savol. Ma'lumotni yuklash va ko'rish: pd.read_csv (DataFrame), head (dastlabki qatorlar), info (ustunlar/turlar/yetishmayotgan), describe (statistika), shape (o'lcham); ma'lumotni tanimasdan tahlil qilib bo'lmaydi (CRISP-DM ma'lumot tushunish). Tozalash va savol berish: tozalash (isnull().sum(), dropna, drop_duplicates — iflos → noto'g'ri), savol (aniq maqsad — "qaysi mahsulot eng ko'p daromad?"); toza ma'lumot + aniq savol (to'g'ri natija + yo'nalish).

  2. Guruhlash, tahlil, xulosa. Guruhlash va tahlil: groupby (guruh bo'yicha — har mahsulot daromadi), sort_values (eng yuqori), df[shart] (filtr), sum/mean/count (agregatsiya); savolga javob ma'lumotni qayta ishlashdan. Xulosa chiqarish: natijani tushunarli ("A eng ko'p daromad") va qarorga ("A ni ko'proq buyurt"); tahlil o'zi maqsad emas — qaror (raqam → ma'no → qaror), muloqot muhim.

  3. To'liq tsikl va san'at. To'liq tsikl (mini loyiha): yukla → ko'r → tozala → savol → tahlil → xulosa — CRISP-DM kichraytirilgan 1.4-bob; model har doim kerak emas (oddiy tahlil ko'p savolga javob — kim/nima/qancha; model faqat bashorat). Birinchi tahlil — savolga javob berish san'ati: ma'lumotga savol berib undan javob topish (tahlil, murakkab model emas); nazariyadan amaliyotga o'tish, 4-5-qism (Pandas) uchun poydevor. Eng oddiy yetadigan yechim murakkabdan yaxshi (tushunarli, tez, ishonchli — Occam ustarasi); tajribasiz odamlar murakkablikni ortiqcha qadrlaydi (glamur, vosita istagi), usta soddalikni tanlaydi.

Bu bilan 1-bosqichning kirish qismi nazariy poydevorni berdi. Keyingi darsda Data Science etikasini chuqur o'rganamiz: bias, maxfiylik, adolat va mas'uliyatli AI — ma'lumot kuchini to'g'ri ishlatish.

Ulashish:Telegram'da

Izohlar (0)

Izoh yozish uchun kiring.

  • Hozircha izoh yo'q. Birinchi bo'ling!
1.6-dars: Birinchi tahlil (mini loyiha) — IlmHamroh