IlmHamroh
Python kursi/Malumot tahlili18/18-dars15 daqiqa
Mundarija (22)

24.18-dars: Amaliy tahlil loyihasi

24-QISM — MA'LUMOT TAHLILI · 18-dars (yakuniy)


1. Kirish va motivatsiya

24-qism davomida ma'lumot tahlilining barcha bosqichlarini o'rgandik: NumPy (24.1–24.4), pandas (24.5–24.12), vizualizatsiya (24.13–24.15), statistika (24.16–24.17). Endi ularni birlashtirib, real ma'lumotni to'liq tahlil qilamiz — savoldan xulosaga. Bu — 24-qismning yakuni, barcha bilimni bir loyihada qo'llash.

Ma'lumot tahlili loyihasi — to'liq quvur (pipeline): 1) savol (nima bilmoqchimiz?), 2) yuklash (o'qish — 24.6), 3) tozalash (24.8 — bo'sh, xato), 4) kashf (describe, guruhlash — 24.9), 5) vizualizatsiya (24.13 — trend, taqqoslash), 6) statistika (24.16–24.17 — test, korrelyatsiya), 7) xulosa (javob + tavsiya). Har bosqich oldingi darslarga tayanadi. "Ma'lumotdan qaror" — tahlilchining asosiy ishi.

Real vaziyat. Bir do'kon savol berdi: "qaysi hudud daromadliroq va yangi mahsulotni kiritsakmi?". Xom sotuv ma'lumoti bor edi. To'liq tahlil: yuklash → tozalash (bo'sh narxlar) → guruhlash (hudud daromadi) → grafik (trend) → t-test (hudud farqi muhimmi) → xulosa (Toshkent daromadliroq, lekin farq statistik muhim emas — ko'proq ma'lumot kerak). Ma'lumot tahlili biznes qarori uchun ishonchli asos berdi.

Bu darsda — 24-qism yakuni — to'liq ma'lumot tahlili loyihasini bajaramiz.

Bu darsda:

  • Tahlil quvuri (pipeline)
  • Savol → ma'lumot → xulosa
  • Yuklash va tozalash
  • Kashf (EDA)
  • Guruhlash va tahlil
  • Statistik tekshirish
  • Xulosa va tavsiya
  • 24-qism yakuni

ℹ Misollarda NumPy, pandas, scipy bilan sinaladi.


2. Nazariya — chuqur tushuntirish

2.1. Tahlil quvuri (pipeline)

Ma'lumot tahlili bosqichlari:

1. Savol      — nima bilmoqchimiz?
2. Yuklash    — ma'lumotni o'qi (24.6)
3. Tozalash   — bo'sh, xato, takror (24.8)
4. Kashf (EDA) — describe, guruhlash (24.9)
5. Vizualizatsiya — grafik (24.13-15)
6. Statistika — test, korrelyatsiya (24.16-17)
7. Xulosa     — javob + tavsiya

Tahlil quvuri (pipeline) — ma'lumotdan xulosaga tartibli yo'l: savol → yuklash → tozalash → kashf → vizualizatsiya → statistika → xulosa. Har bosqich oldingiga tayanadi (iflos ma'lumot — noto'g'ri xulosa). Bu tartib tahlilni ishonchli va takrorlanadigan qiladi. Ba'zan bosqichlar takrorlanadi (kashf → yana tozalash). Tahlilning umumiy tuzilishi.

2.2. Savol — tahlil boshi

Yaxshi savol — yaxshi tahlil:

Yomon: "ma'lumotni tahlil qil"  (aniq emas)
Yaxshi: "qaysi hudud daromadliroq?"  (aniq, o'lchab bo'ladigan)
Yaxshi: "narx va sotuv bog'liqmi?"

Savol — tahlilning boshi va yo'nalishi: aniq, o'lchab bo'ladigan (qaysi hudud? narx sotuvga ta'sir qiladimi?). Noaniq savol ("ma'lumotni ko'r") — yo'nalishsiz tahlil. Aniq savol qaysi ma'lumot, qaysi usul (guruhlash? test?) kerakligini belgilaydi. "To'g'ri savol — yarim javob" — tahlil savoldan boshlanadi, ma'lumotdan emas.

2.3. Yuklash va tozalash

Ma'lumotni tayyorlash:

python
df = pd.read_csv("sotuv.csv", parse_dates=["sana"])  # yukla
df.isna().sum()                          # bo'shni tekshir
df["narx"] = df["narx"].fillna(df["narx"].median())  # tozala
df = df.drop_duplicates()                # takror

Yuklash (24.6 — read_csv, parse_dates) va tozalash (24.8 — isna, fillna, drop_duplicates) — tahlilning 80% 24.6-bob. Ma'lumotni o'qi, tekshir (head, dtypes, isna), tozala (bo'sh, xato, takror). Toza ma'lumotsiz keyingi bosqichlar noto'g'ri ("garbage in, garbage out"). Bu — ishonchli tahlilning poydevori.

2.4. Kashf (EDA)

Ma'lumotni tanish:

python
df.describe()            # statistik xulosa (24.16)
df.shape                 # o'lcham
df["hudud"].value_counts()   # kategoriya
df.groupby("hudud")["daromad"].sum()  # guruhlash (24.9)

Kashf (EDA — Exploratory Data Analysis) — ma'lumotni tanish va naqshlarni topish: describe() (statistika, 24.16), value_counts (kategoriya), groupby (24.9 — toifa bo'yicha), korrelyatsiya 24.16-bob. Maqsad: ma'lumotda nima bor, qanday taqsimlangan, qanday bog'lanishlar. Bu bosqichda savolga yaqinlashamiz (qaysi hudud katta?). Kashf — tahlilning yuragi.

2.5. Vizualizatsiya

Naqshlarni ko'rsatish:

python
df.groupby("hudud")["daromad"].sum().plot(kind="bar")  # taqqoslash
df.resample("ME")["daromad"].sum().plot(kind="line")   # trend
sns.heatmap(df.corr(numeric_only=True), annot=True)    # korrelyatsiya

Vizualizatsiya (24.13–24.15) — naqshlarni ko'z bilan: taqqoslash (bar — hududlar), trend (line — vaqt, 24.11), korrelyatsiya (heatmap — 24.14), taqsimot (hist). Grafik sonlardan tez tushuniladi va xulosani ko'rsatadi. To'g'ri grafik turi 24.13-bob — savolga mos. Vizualizatsiya — kashf va yetkazishning kuchli qismi.

2.6. Statistik tekshirish

Xulosani tasdiqlash:

python
t, p = stats.ttest_ind(hudud_a, hudud_b)   # farq muhimmi (24.17)
r, pr = stats.pearsonr(narx, sotuv)         # korrelyatsiya muhim (24.17)

Statistik tekshirish (24.16–24.17) — kuzatilgan naqshni tasdiqlash: guruhlar farqi haqiqiymi (t-test), korrelyatsiya muhimmi (pearsonr). "Toshkent daromadliroq ko'rinadi" — lekin farq statistik muhimmi yoki tasodifmi? Bu bosqich xulosani ishonchli qiladi (soxta xulosadan saqlaydi). Statistika — tahlilning ilmiy asosi.

2.7. Xulosa va tavsiya

Javob va harakat:

Xulosa: Toshkent daromadi yuqori (18650 vs 13800)
Statistik: lekin farq muhim emas (p=0.22 > 0.05)
Tavsiya: ko'proq ma'lumot yig'ish, keyin qaror

Xulosa — savolga javob (ma'lumot asosida) va tavsiya (harakat): natija (Toshkent daromadliroq), ishonchlilik (statistik muhimmi), tavsiya (nima qilish). Halol xulosa: ma'lumot nimani ko'rsatadi va nimani ko'rsatmaydi (cheklovlar — kam ma'lumot, korrelyatsiya ≠ sababiy). Bu tahlilning maqsadi — ma'lumot bilan ishonchli qaror. Tahlil xulosa bilan tugaydi.

2.8. Ma'lumot tahlili — qaror asosi

Ma'lumot tahlilining maqsadi — ma'lumot bilan qaror (data-driven decision): his-tuyg'u yoki taxmin emas, ma'lumot asosida. Lekin halol bo'lish: ma'lumot cheklovlarini tan olish (kam namuna, iflos manba, korrelyatsiya ≠ sababiy), chalg'itmaslik (24.16 — to'liq rasm), statistik tasdiq 24.17-bob. "Ma'lumot yolg'on gapirmaydi, lekin uni noto'g'ri o'qish mumkin". Yaxshi tahlilchi: to'g'ri savol, toza ma'lumot, to'g'ri usul, halol xulosa. Bu 24-qismning mohiyati.


3. Tez ma'lumotnoma

python
import numpy as np, pandas as pd
from scipy import stats
import matplotlib.pyplot as plt
import seaborn as sns

# 1. Yuklash 24.6-bob:
df = pd.read_csv("data.csv", parse_dates=["sana"])

# 2. Tozalash 24.8-bob:
df.isna().sum()
df["narx"] = df["narx"].fillna(df["narx"].median())
df = df.drop_duplicates()

# 3. Kashf (24.9, 24.16):
df.describe()
df.groupby("hudud")["daromad"].sum()
df.corr(numeric_only=True)

# 4. Vizualizatsiya (24.13-15):
df.groupby("hudud")["daromad"].sum().plot(kind="bar")
df.resample("ME")["daromad"].sum().plot(kind="line")

# 5. Statistika 24.17-bob:
t, p = stats.ttest_ind(guruh_a, guruh_b)

# 6. Xulosa: javob + ishonchlilik + tavsiya

Loyiha xulosasi

Pipeline: savol → yukla → tozala → kashf → vizual → statistika → xulosa
Har bosqich oldingiga tayanadi · toza ma'lumot → to'g'ri xulosa
Ma'lumot bilan qaror (halol, cheklovlar bilan)

4. Batafsil misollar

Misollarda NumPy, pandas, scipy bilan sinaladi. Bu — to'liq tahlil loyihasining bosqichlari.

Misol 1 — Yuklash, tozalash, kashf

python
"""1-3 bosqich: yuklash (parse_dates), tozalash (fillna), kashf (describe, guruhlash)."""

import warnings
warnings.filterwarnings("ignore")

from io import StringIO

import pandas as pd


def main() -> None:
    csv = (
        "sana,hudud,mahsulot,narx,soni\n"
        "2024-01-05,Toshkent,Python,100,50\n"
        "2024-01-15,Samarqand,Go,120,30\n"
        "2024-02-10,Toshkent,Python,100,60\n"
        "2024-02-20,Samarqand,Rust,150,20\n"
        "2024-03-01,Toshkent,Go,120,45\n"
        "2024-03-15,Samarqand,Python,,25\n"
    )

    print("=== 1. Yuklash (parse_dates) ===")
    df = pd.read_csv(StringIO(csv), parse_dates=["sana"])
    print(f"  shape: {df.shape}, ustunlar: {list(df.columns)}")

    print("\n=== 2. Bo'shni tekshir va tozala ===")
    print(f"  bo'sh narx: {df['narx'].isna().sum()}")
    df["narx"] = df["narx"].fillna(df["narx"].median())
    print(f"  tozalangach: {df['narx'].isna().sum()}")

    print("\n=== 3. Daromad ustuni ===")
    df["daromad"] = df["narx"] * df["soni"]
    print(f"  daromadlar: {df['daromad'].tolist()}")

    print("\n=== 4. Kashf (describe, value_counts) ===")
    print(f"  o'rtacha daromad: {round(df['daromad'].mean(), 1)}")
    print(f"  hudud soni: {df['hudud'].value_counts().to_dict()}")
    print("  ⭐ yukla → tozala → kashf (tahlil poydevori)")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. Yuklash (parse_dates) ===
  shape: (6, 5), ustunlar: ['sana', 'hudud', 'mahsulot', 'narx', 'soni']

=== 2. Bo'shni tekshir va tozala ===
  bo'sh narx: 1
  tozalangach: 0

=== 3. Daromad ustuni ===
  daromadlar: [5000.0, 3600.0, 6000.0, 3000.0, 5400.0, 3000.0]

=== 4. Kashf (describe, value_counts) ===
  o'rtacha daromad: 4333.3
  hudud soni: {'Toshkent': 3, 'Samarqand': 3}
  ⭐ yukla → tozala → kashf (tahlil poydevori)

Nima ko'rsatdi: 2.3, 2.4-bo'limlar.

Misol 2 — Guruhlash va vaqt tahlili

python
"""4-5 bosqich: guruhlash (hudud/mahsulot), vaqt tahlil (resample) — naqshlarni topish."""

import warnings
warnings.filterwarnings("ignore")

from io import StringIO

import pandas as pd


def main() -> None:
    csv = (
        "sana,hudud,mahsulot,narx,soni\n"
        "2024-01-05,Toshkent,Python,100,50\n"
        "2024-01-15,Samarqand,Go,120,30\n"
        "2024-02-10,Toshkent,Python,100,60\n"
        "2024-02-20,Samarqand,Rust,150,20\n"
        "2024-03-01,Toshkent,Go,120,45\n"
        "2024-02-25,Samarqand,Go,120,35\n"
    )
    df = pd.read_csv(StringIO(csv), parse_dates=["sana"])
    df["daromad"] = df["narx"] * df["soni"]

    print("=== 1. Hudud bo'yicha daromad ===")
    hudud = df.groupby("hudud")["daromad"].sum().sort_values(ascending=False)
    print(f"  {hudud.to_dict()}")

    print("\n=== 2. Mahsulot bo'yicha o'rtacha narx ===")
    print(f"  {df.groupby('mahsulot')['narx'].mean().round(1).to_dict()}")

    print("\n=== 3. Vaqt tahlil (oylik daromad) ===")
    df_t = df.set_index("sana").sort_index()
    oylik = df_t.resample("ME")["daromad"].sum()
    print(f"  {[(str(k.date()), int(v)) for k, v in oylik.items()]}")

    print("\n=== 4. Eng yaxshi hudud ===")
    print(f"  eng daromadli: {hudud.index[0]} ({hudud.iloc[0]})")
    print("  ⭐ guruhlash + vaqt — naqshlarni topish (kashf)")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. Hudud bo'yicha daromad ===
  {'Toshkent': 16400, 'Samarqand': 10800}

=== 2. Mahsulot bo'yicha o'rtacha narx ===
  {'Go': 120.0, 'Python': 100.0, 'Rust': 150.0}

=== 3. Vaqt tahlil (oylik daromad) ===
  [('2024-01-31', 8600), ('2024-02-29', 13200), ('2024-03-31', 5400)]

=== 4. Eng yaxshi hudud ===
  eng daromadli: Toshkent (16400)
  ⭐ guruhlash + vaqt — naqshlarni topish (kashf)

Nima ko'rsatdi: 2.4, 2.5-bo'limlar.

Misol 3 — Statistik tekshirish

python
"""6-bosqich: statistik tekshirish — t-test (hudud farqi), korrelyatsiya (narx-soni)."""

import warnings
warnings.filterwarnings("ignore")

from io import StringIO

import pandas as pd
from scipy import stats


def main() -> None:
    csv = (
        "hudud,narx,soni\n"
        "Toshkent,100,50\nToshkent,100,60\nToshkent,120,45\nToshkent,150,15\n"
        "Samarqand,120,30\nSamarqand,150,20\nSamarqand,120,35\nSamarqand,100,25\n"
    )
    df = pd.read_csv(StringIO(csv))
    df["daromad"] = df["narx"] * df["soni"]

    print("=== 1. Hudud daromadlari ===")
    tosh = df[df["hudud"] == "Toshkent"]["daromad"]
    sam = df[df["hudud"] == "Samarqand"]["daromad"]
    print(f"  Toshkent o'rtacha: {round(tosh.mean(), 1)}")
    print(f"  Samarqand o'rtacha: {round(sam.mean(), 1)}")

    print("\n=== 2. t-test (farq muhimmi?) ===")
    t, p = stats.ttest_ind(tosh, sam)
    print(f"  p-qiymat: {round(p, 3)}")
    print(f"  farq statistik muhim: {p < 0.05}")

    print("\n=== 3. Korrelyatsiya (narx-soni) ===")
    r, pr = stats.pearsonr(df["narx"], df["soni"])
    print(f"  korrelyatsiya: {round(r, 3)}")
    print(f"  muhim: {pr < 0.05}")

    print("\n=== 4. Talqin ===")
    print(f"  narx oshsa soni tushadi (manfiy korrelyatsiya)")
    farq_holati = "muhim" if p < 0.05 else "ishonchsiz (koproq malumot kerak)"
    print(f"  hudud farqi {farq_holati}")
    print("  ⭐ statistik tekshirish — xulosani tasdiqlash")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. Hudud daromadlari ===
  Toshkent o'rtacha: 4662.5
  Samarqand o'rtacha: 3325.0

=== 2. t-test (farq muhimmi?) ===
  p-qiymat: 0.191
  farq statistik muhim: False

=== 3. Korrelyatsiya (narx-soni) ===
  korrelyatsiya: -0.731
  muhim: True

=== 4. Talqin ===
  narx oshsa soni tushadi (manfiy korrelyatsiya)
  hudud farqi ishonchsiz (koproq malumot kerak)
  ⭐ statistik tekshirish — xulosani tasdiqlash

Nima ko'rsatdi: 2.6-bo'lim.

Misol 4 — Amaliy: to'liq tahlil loyihasi

Real loyiha: savoldan xulosaga — barcha bosqich birga. Bu — ma'lumot tahlilining to'liq namunasi.

python
"""to'liq loyiha: savol → yukla → tozala → kashf → statistika → xulosa + tavsiya."""

import warnings
warnings.filterwarnings("ignore")

from io import StringIO

import pandas as pd
from scipy import stats


def main() -> None:
    print("=== SAVOL: qaysi hudud daromadliroq? ===\n")

    print("=== 1. Yuklash va tozalash ===")
    csv = (
        "sana,hudud,narx,soni\n"
        "2024-01-05,Toshkent,100,50\n2024-02-10,Toshkent,100,60\n"
        "2024-03-01,Toshkent,120,45\n2024-01-20,Toshkent,150,15\n"
        "2024-01-15,Samarqand,120,30\n2024-02-20,Samarqand,150,20\n"
        "2024-02-25,Samarqand,120,35\n2024-03-15,Samarqand,,25\n"
    )
    df = pd.read_csv(StringIO(csv), parse_dates=["sana"])
    df["narx"] = df["narx"].fillna(df["narx"].median())
    df["daromad"] = df["narx"] * df["soni"]
    print(f"  {len(df)} yozuv, bo'sh tozalandi")

    print("\n=== 2. Kashf (hudud daromadi) ===")
    hudud = df.groupby("hudud")["daromad"].sum()
    print(f"  {hudud.to_dict()}")

    print("\n=== 3. Statistik tekshirish (t-test) ===")
    tosh = df[df["hudud"] == "Toshkent"]["daromad"]
    sam = df[df["hudud"] == "Samarqand"]["daromad"]
    t, p = stats.ttest_ind(tosh, sam)
    print(f"  p-qiymat: {round(p, 3)}")

    print("\n=== 4. XULOSA va tavsiya ===")
    yuqori = hudud.idxmax()
    muhim = p < 0.05
    print(f"  javob: {yuqori} daromadi yuqori ({int(hudud.max())} vs {int(hudud.min())})")
    print(f"  ishonchlilik: farq statistik {'muhim' if muhim else 'muhim EMAS (p>0.05)'}")
    if muhim:
        tavsiya = f"{yuqori}ga e'tibor qaratish"
    else:
        tavsiya = "ko'proq ma'lumot yig'ish (farq ishonchsiz)"
    print(f"  tavsiya: {tavsiya}")
    print("  ⭐ to'liq tahlil — savoldan ishonchli xulosaga")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== SAVOL: qaysi hudud daromadliroq? ===

=== 1. Yuklash va tozalash ===
  8 yozuv, bo'sh tozalandi

=== 2. Kashf (hudud daromadi) ===
  {'Samarqand': 13800.0, 'Toshkent': 18650.0}

=== 3. Statistik tekshirish (t-test) ===
  p-qiymat: 0.217

=== 4. XULOSA va tavsiya ===
  javob: Toshkent daromadi yuqori (18650 vs 13800)
  ishonchlilik: farq statistik muhim EMAS (p>0.05)
  tavsiya: ko'proq ma'lumot yig'ish (farq ishonchsiz)
  ⭐ to'liq tahlil — savoldan ishonchli xulosaga

Nima ko'rsatdi: 2.1–2.8-bo'limlar.


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

Noto'g'ri fikr To'g'risi
"Ma'lumotdan boshla" Savoldan boshla
"Tozalash — ozroq" Tahlilning 80%
"Grafik chizsam bo'ldi" Statistik tasdiq kerak
"Farq bor = xulosa" Test (muhimmi?)
"Ma'lumot haqiqatni aytadi" To'g'ri o'qish kerak
"Bir usul yetarli" Ko'p bosqich (pipeline)
"Xulosa = javob" Javob + ishonchlilik + cheklov
"Korrelyatsiya = sabab" ≠ sababiy

6. Keng tarqalgan xatolar va yechimlari

1. Savolsiz tahlil

python
# ma'lumotni ko'r-ko'rona tahlil              # ⚠️ yo'nalishsiz
# aniq savol (qaysi hudud?)                    # ✅

2. Tozalashni o'tkazib yuborish

python
df.groupby(...)   # bo'sh/xato aralash          # ⚠️
df.isna().sum(); tozala; keyin tahlil           # ✅

3. Grafik = xulosa deb o'ylash

python
# "grafikda farq ko'rinadi" → xulosa            # ⚠️
# t-test (farq muhimmi?)                         # ✅

4. Statistik tasdiqsiz xulosa

python
# "Toshkent katta" (ko'z bilan)                 # ⚠️
# t-test bilan tasdiqla                          # ✅

5. Cheklovlarni aytmaslik

python
# "Toshkent daromadliroq" (aniq)                # ⚠️
# "...lekin kam ma'lumot, farq ishonchsiz"       # ✅

6. Korrelyatsiyani sababiy talqin

python
# "narx sotuvni tushiradi" (sababiy)            # ⚠️
# "narx-sotuv manfiy korrelyatsiya" (≠ sabab)   # ✅

7. Iflos ma'lumotga ishonish

python
# o'qidim, darrov tahlil                        # ⚠️
# tekshir (head, dtypes, isna, describe)         # ✅

7. Integratsiya — bu bilim qayerda kerak bo'ladi

  • 24.1–24.17 (o'tilgan): Barcha 24-qism — bu loyihada birga
  • 25-qism: ML — ma'lumot tayyorlash (tahlil asosi)
  • 26-qism: Avtomatlashtirish — tahlil skripti
  • 28-qism: Infratuzilma — ma'lumot quvuri
  • 31-qism: Loyihalar — ETL, ma'lumot tahlili

8. Eng yaxshi amaliyotlar

  1. Savoldan boshla (ma'lumotdan emas).

  2. Tozalashga vaqt sarfla (80%).

  3. Kashf (EDA) — describe, guruhlash.

  4. Grafik bilan naqshni ko'rsat.

  5. Statistik tasdiq (test, korrelyatsiya).

  6. Xulosa: javob + ishonchlilik + cheklov.

  7. Halol bo'l (cheklovlarni tan ol).

  8. Takrorlanadigan (skript, hujjatlangan).


9. Amaliy topshiriq

Vazifa 1: Bashorat qiling

python
1.  # tahlil quvuri nima?
2.  # tahlil nimadan boshlanadi?
3.  # tozalash nima uchun?
4.  # EDA nima?
5.  # kashf nima beradi?
6.  # vizualizatsiya nima uchun?
7.  # statistik tasdiq nima uchun?
8.  # xulosa nima?
9.  # halol xulosa nima?
10. # data-driven qaror nima?
11. # savol nega muhim?
12. # korrelyatsiya sababiymi?
Javoblar
  1. Savol → yukla → tozala → kashf → vizual → statistika → xulosa
  2. Savol (ma'lumotdan emas)
  3. Toza ma'lumot → to'g'ri xulosa
  4. Exploratory Data Analysis (kashf)
  5. Ma'lumotni tanish, naqshlar
  6. Naqshni ko'rsatish (tez tushunish)
  7. Xulosani ishonchli qilish (tasodifmi?)
  8. Javob + ishonchlilik + tavsiya
  9. Cheklovlarni tan olish
  10. Ma'lumot asosida qaror
  11. Yo'nalish beradi (yarim javob)
  12. Yo'q (correlation ≠ causation)

Vazifa 2: Xatolarni tuzating

python
1.  # ma'lumotni ko'r-ko'rona           # savol

2.  df.groupby(...)  # tozalashsiz       # avval tozala

3.  # grafik → xulosa                    # statistik tasdiq

4.  # "Toshkent katta" (aniq)            # cheklov

5.  # "narx sotuvni tushiradi"           # ≠ sababiy
Javoblar
python
1.  # aniq savol (qaysi hudud?)

2.  df.isna(); tozala; keyin groupby

3.  # t-test bilan tasdiqla

4.  # "...lekin kam ma'lumot, ishonchsiz"

5.  # "manfiy korrelyatsiya (≠ sabab)"

Vazifa 3: Yuklash/tozalash

Tayyorlash:

  1. read_csv
  2. isna
  3. fillna
  4. Yangi ustun

Vazifa 4: Kashf

EDA:

  1. describe
  2. value_counts
  3. groupby
  4. Korrelyatsiya

Vazifa 5: Statistika

Tasdiq:

  1. ttest_ind
  2. pearsonr
  3. p-qiymat
  4. Talqin

Vazifa 6: To'liq loyiha

Savoldan xulosaga:

  1. Savol
  2. Yukla, tozala
  3. Kashf, statistika
  4. Xulosa + tavsiya

Vazifa 7: O'ylash

Ma'lumot tahlili — savoldan ishonchli xulosaga tartibli yo'l (pipeline). Har bosqich muhim: savol (yo'nalish), tozalash (toza ma'lumot), kashf (naqsh), statistika (tasdiq), xulosa (javob + cheklov). Nima uchun "tahlil — jarayon, bir amal emas", va nega halol xulosa (cheklovlarni tan olish) — yaxshi tahlilchining eng muhim fazilati, "ma'lumot bilan qaror" (data-driven) mas'uliyati nimani anglatadi?

Javob

Qisqa javob: Tahlil — jarayon (savol → tozala → kashf → statistika → xulosa), bir amal emas, chunki har bosqich oldingiga tayanadi va xatosi keyingini buzadi (iflos ma'lumot → noto'g'ri xulosa). Har bosqichni o'tkazib yuborish (tozalash yo'q, statistik tasdiq yo'q) noto'g'ri xulosa beradi. Halol xulosa (cheklovlarni tan olish) — eng muhim fazilat, chunki: ma'lumot hamma narsani aytmaydi (kam namuna, iflos manba, korrelyatsiya ≠ sababiy) — buni tan olmaslik soxta ishonch beradi (xato qaror). Yaxshi tahlilchi "ma'lumot nimani ko'rsatadi va nimani ko'rsatmaydi" ni aytadi. "Ma'lumot bilan qaror" mas'uliyati — ma'lumotni to'g'ri o'qish (chalg'itmaslik), cheklovlar bilan, ehtiyotli talqin. "Ma'lumot yolg'on gapirmaydi, lekin uni noto'g'ri o'qish mumkin" — mas'uliyat tahlilchida.

1. Tahlil — jarayon

Har bosqich oldingiga tayanadi:

  • Savol yo'q → yo'nalishsiz
  • Tozalash yo'q → iflos → noto'g'ri
  • Statistik tasdiq yo'q → soxta xulosa

Bir bosqich buzilsa — butun tahlil buziladi.

2. Halol xulosa

Ma'lumot hamma narsani aytmaydi:

  • Kam namuna (ishonchsiz)
  • Iflos manba (xato)
  • Korrelyatsiya ≠ sababiy
  • Statistik ≠ amaliy muhim

Bularni tan olmaslik — soxta ishonch (xato qaror).

3. "Nimani ko'rsatadi va ko'rsatmaydi"

Ko'rsatadi Ko'rsatmaydi
Toshkent daromadliroq Farq ishonchlimi (kam ma'lumot)
Korrelyatsiya bor Sabab (≠ causation)
Namunada naqsh Butun populyatsiya

4. Data-driven mas'uliyat

Ma'lumot bilan qaror — kuchli, lekin mas'uliyat: to'g'ri o'qish, cheklovlar, halol xulosa. Noto'g'ri o'qish (chalg'itish, p-hacking) — ma'lumot "yolg'on"dan battar (soxta ishonch).

5. Muhandislik saboqlari

  1. Tahlil — jarayon (har bosqich muhim)
  2. Halol xulosa (cheklovlar)
  3. Ma'lumot hamma narsani aytmaydi
  4. Data-driven — mas'uliyat bilan

6. Xulosa

  1. Tahlil — tartibli jarayon (pipeline)
  2. Halol xulosa — eng muhim fazilat
  3. Cheklovlarni tan ol
  4. Ma'lumotni to'g'ri o'qi (mas'uliyat)

Nimani mustahkamlaydi: 2.1–2.8-bo'limlar.


Xulosa

Bu darsda — 24-qism yakuni — to'liq ma'lumot tahlili loyihasini bajardik.

Eng muhim uch fikr:

  1. Tahlil quvuri (pipeline). Ma'lumot tahlili — savoldan xulosaga tartibli yo'l: savol (aniq, o'lchab bo'ladigan — yo'nalish) → yuklash (24.6 — read_csv, parse_dates) → tozalash (24.8 — isna, fillna, drop_duplicates — tahlilning 80%) → kashf (EDA — describe, groupby, korrelyatsiya — naqshlarni topish) → vizualizatsiya (24.13–24.15 — grafik bilan naqsh) → statistika (24.16–24.17 — test bilan tasdiq) → xulosa (javob + ishonchlilik + tavsiya). Har bosqich oldingiga tayanadi.

  2. Har bosqichning roli. Savol — tahlil boshi (ma'lumotdan emas — "to'g'ri savol yarim javob"). Tozalash — poydevor (iflos ma'lumot → noto'g'ri xulosa, "garbage in, garbage out"). Kashf (EDA) — ma'lumotni tanish (nima bor, qanday taqsimlangan, bog'lanishlar). Vizualizatsiya — naqshni ko'z bilan (tez tushunish). Statistik tekshirish — kuzatilgan naqshni tasdiqlash (farq haqiqiymi yoki tasodif — t-test, pearsonr — soxta xulosadan saqlaydi). Har biri 24-qismning oldingi darslariga tayanadi.

  3. Halol xulosa va data-driven qaror. Xulosa — savolga javob (ma'lumot asosida) + ishonchlilik (statistik muhimmi) + tavsiya (harakat). Halol bo'lish — ma'lumot cheklovlarini tan olish (kam namuna, iflos manba, korrelyatsiya ≠ sababiy), "nimani ko'rsatadi va nimani ko'rsatmaydi". Tahlil — jarayon (bir amal emas), har bosqich muhim. Maqsad — ma'lumot bilan qaror (data-driven), lekin mas'uliyat bilan (to'g'ri o'qish, chalg'itmaslik). "Ma'lumot yolg'on gapirmaydi, lekin uni noto'g'ri o'qish mumkin". 24-qism: NumPy (24.1–24.4), pandas (24.5–24.12), vizualizatsiya (24.13–24.15), statistika (24.16–24.17), amaliy loyiha 24.18-bob — ma'lumotdan haqiqatni ajratish mahorati.

Keyingi qismda (25-qism: ML va AI) mashinaviy o'qitishni — modelni ma'lumotda o'qitish, bashorat, scikit-learn, PyTorch, LLM API'ni o'rganamiz: ma'lumotdan model qurish mahorati.

Ulashish:Telegram'da

Izohlar (0)

Izoh yozish uchun kiring.

  • Hozircha izoh yo'q. Birinchi bo'ling!
24.18-dars: Amaliy tahlil loyihasi — IlmHamroh