IlmHamroh
Data Science va sun'iy intellekt/Malumotni tozalash10/12-dars19 daqiqa
Mundarija (22)

6.10-dars: Noto'g'ri qiymatlar

6-QISM — MA'LUMOTNI TOZALASH · 10-dars


1. Kirish va motivatsiya

Ba'zi qiymatlar mantiqan noto'g'ri — yetishmayotgan 6.1-bob yoki outlier 6.3-bob emas, balki imkonsiz yoki mantiqsiz: yosh -5 (manfiy yosh yo'q), foiz 150 (100% dan katta), narx manfiy, tug'ilgan sana kelajakda, "yosh 5" bilan "lavozim: direktor" (imkonsiz kombinatsiya). Bu qiymatlar sintaksis jihatidan to'g'ri (son, sana — tur to'g'ri), lekin domen (soha) qoidalariga zid. Kompyuter ularni topmaydi (format to'g'ri) — faqat mantiqiy tekshirish (domen bilimi) topadi. Noto'g'ri qiymatlar — domen qoidalarini buzuvchi qiymatlar. Bu darsda ularni topish (mantiqiy shartlar, diapazon, kombinatsiya), va hal qilish (tuzatish, o'chirish, NaN). Nega muhim? (1) Yashirin — format to'g'ri (topish qiyin); (2) Domen — soha qoidasi (yosh 0-120); (3) Mantiqiy — imkonsiz kombinatsiya. Bu dars noto'g'ri qiymatlarni o'rgatadi — domen bilan topish.

Noto'g'ri qiymatlar (invalid values) — mantiqan noto'g'ri: imkonsiz (yosh -5, foiz 150, narx manfiy — diapazon tashqari), mantiqsiz (kelajak sana, imkonsiz kombinatsiya), domen qoidasi (soha — yosh 0-120, foiz 0-100), topish (mantiqiy shart — df[df["yosh"] < 0]; diapazon; kombinatsiya), hal (tuzatish, o'chirish, NaN), yetishmayotgan/outlier farqi (bu mantiqiy xato — format to'g'ri). Foydalanish: domen xatolarini topish, ma'lumot to'g'riligi. Bu 6.1 (yetishmayotgan), 6.3 (outlier), 6.8 (sana — kelajak) bilan bog'liq. Noto'g'ri qiymatlar — domen bilan topish. Domen. Mantiqiy.

Real vaziyat. Data Scientist so'rovnoma ma'lumotini tekshirmoqchi. Noto'g'ri qiymatlar: yosh (-5, 250 — imkonsiz), foiz (150 — 100%dan katta), daromad (-1000 — manfiy), va yosh=8 bilan mashina_bor=ha (8 yoshli mashina haydaydi? — mantiqsiz). Muammo: format to'g'ri (son — to_numeric xato bermaydi; outlier ham emas — 250 IQR chegarasida bo'lishi mumkin); faqat domen (yosh 0-120 — soha qoidasi) topadi. Hal: mantiqiy shart (df[(df["yosh"] < 0) | (df["yosh"] > 120)] — imkonsiz yosh → NaN yoki o'chir); kombinatsiya (df[(df["yosh"] < 16) & (df["mashina_bor"] == "ha")] — shubhali). Data Scientist domen qoidasi bilan topdi (yosh 0-120), hal qildi. Noto'g'ri qiymatlar — domen bilan.

Bu darsda noto'g'ri qiymatlarni o'rganamiz.

Bu darsda:

  • Diapazon tekshirish (imkonsiz)
  • Domen qoidasi (soha)
  • Kombinatsiya (imkonsiz birga)
  • Yetishmayotgan/outlier farqi
  • Hal qilish (tuzatish, NaN)
  • Noto'g'ri qiymat amaliyoti
  • Noto'g'ri qiymat tuzoqlari
  • Amaliy: noto'g'ri qiymatlar

ℹ Misollar real pandas bilan (Python 3.14) ishlaydi.


2. Nazariya — chuqur tushuntirish

2.1. Diapazon tekshirish (imkonsiz)

Mumkin oraliq:

python
import pandas as pd

# diapazon tekshirish (mantiqiy shart)
noto_yosh = df[(df["yosh"] < 0) | (df["yosh"] > 120)]   # imkonsiz yosh
noto_foiz = df[(df["foiz"] < 0) | (df["foiz"] > 100)]   # foiz 0-100

# between (oraliq ichida)
tugri = df[df["yosh"].between(0, 120)]   # to'g'ri qatorlar

Diapazon tekshirish (imkonsiz) — mumkin oraliq: har son ustuni mumkin oraliqka ega (yosh 0-120, foiz 0-100, narx ≥ 0); imkonsiz — oraliq tashqari (df[(df["yosh"] < 0) | (df["yosh"] > 120)]); between(0, 120) (oraliq ichida — to'g'ri). Sabab: fizik/mantiqiy chegara (yosh manfiy yo'q; foiz 100%dan katta yo'q; narx manfiy yo'q); diapazon — domen qoidasi (soha — yosh 0-120); imkonsiz → xato (kiritish, o'lchov). < min | > max (imkonsiz), between (to'g'ri oraliq), chegara (fizik/mantiqiy). Diapazon tekshirish — mumkin oraliq (imkonsiz — chegara). Diapazon. Chegara.

2.2. Domen qoidasi (soha)

Domen qoidasi (soha) — soha bilimi: har ustun soha qoidasiga ega (yosh 0-120, foiz 0-100, oy 1-12, kun 1-31, baho 1-5, telefon 9 raqam); domen bilimi (soha eksperti — nima mumkin); kompyuter bilmaydi (yosh 250 — son sifatida to'g'ri; faqat domen "imkonsiz" deydi). Sabab: kontekst (yosh — inson 0-120; kompaniya yoshi boshqa); domen qoidasi soha bilimiga tayanadi (Data Scientist yolg'iz emas — soha eksperti bilan); "nima mantiqiy?" (soha). Yosh 0-120 (inson), foiz 0-100, oy 1-12 (domen qoidalari), soha bilimi (nima mumkin). Domen qoidasi — soha bilimi (nima mantiqiy). Domen. Soha.

2.3. Kombinatsiya (imkonsiz birga)

Kombinatsiya (imkonsiz birga) — ustunlar orasi: bir ustun to'g'ri, lekin kombinatsiya noto'g'ri (yosh=8 va lavozim="direktor" — 8 yoshli direktor yo'q; homilador="ha" va jins="erkak" — imkonsiz; boshlanish > tugash sana — mantiqsiz); mantiqiy shart (df[(df["yosh"] < 16) & (df["ishlaydi"] == "ha")]). Sabab: ustunlar orasi bog'liqlik (yosh va lavozim; jins va homilador; boshlanish va tugash sana); har ustun alohida to'g'ri, birga imkonsiz (mantiqiy zid); domen (kombinatsiya qoidasi). Bir ustun to'g'ri (alohida), kombinatsiya noto'g'ri (birga zid), mantiqiy shart (& — ikki shart). Kombinatsiya — imkonsiz birga (ustunlar orasi; mantiqiy). Kombinatsiya. Birga.

2.4. Yetishmayotgan/outlier farqi

Yetishmayotgan/outlier farqi — uch turli muammo: yetishmayotgan (6.1 — yo'q qiymat; NaN; hal — o'chir/to'ldir), outlier (6.3 — chetki qiymat; statistik (IQR); xato yoki haqiqiy), noto'g'ri (bu — mantiqan xato; imkonsiz/mantiqsiz; domen; format to'g'ri). Sabab: farqla — turli hal (yetishmayotgan — to'ldir; outlier — chekla/saqla; noto'g'ri — tuzat/o'chir); noto'g'ri — outlierdan farqli (outlier — statistik chetki (50000 maosh — haqiqiy bo'lishi mumkin); noto'g'ri — imkonsiz (yosh 250 — hech qachon to'g'ri emas)). Yetishmayotgan (yo'q — NaN), outlier (chetki — statistik), noto'g'ri (imkonsiz — domen/mantiq). Yetishmayotgan/outlier farqi — uch tur (yo'q/chetki/imkonsiz). Farq. Uch.

2.5. Hal qilish (tuzatish, NaN)

Hal qilish (tuzatish, NaN) — kontekstga: tuzatish (aniq xato — 250 → 25 (raqam qo'shib ketgan?); -500 → 500 (manfiy belgi xato?); manbaga qarab), NaN qilish (df.loc[df["yosh"] > 120, "yosh"] = np.nan — noto'g'ri → NaN; keyin 6.1 hal), o'chirish (qator butunlay xato — o'chir), belgilash (shubhali — df["shubhali"] = ...; tekshirish uchun). Sabab: kontekst (tuzatib bo'ladimi — manba; yoki NaN — noaniq; yoki o'chir — butun qator xato); ko'r-ko'rona o'chirma (ma'lumot). Tuzat (aniq xato — manba), NaN (noaniq — 6.1), o'chir (butun xato), belgila (shubhali). Hal qilish — tuzat/NaN/o'chir (kontekstga). Hal. Tuzat.

2.6. Noto'g'ri qiymat amaliyoti

Noto'g'ri qiymat amaliyoti: domen qoidalari (har ustun — mumkin oraliq/qoida; soha bilimi — yosh 0-120, foiz 0-100); diapazon tekshir (df[(df["x"] < min) | (df["x"] > max)] — imkonsiz); kombinatsiya (ustunlar orasi — & mantiqiy zid); statistika (describe() — min/max g'alatimi; value_counts() — g'alati qiymat); hal (tuzat/NaN/o'chir — kontekst); belgila (shubhali — tekshirish); tekshir (qoida qoniqtiriladimi). Tuzoqlar: domen yo'q (imkonsiz topilmas), outlier bilan aralash (statistik vs mantiqiy), kombinatsiya e'tiborsiz (bir ustun tekshir), ko'r-ko'rona tuzat (manbasiz), soha bilimi yo'q (noto'g'ri qoida). Amaliyot — domen, diapazon, kombinatsiya, hal. Mantiqiy. Domen.

2.7. Noto'g'ri qiymat tuzoqlari

Noto'g'ri qiymat asosiy tuzoqlari: domen qoidasi yo'q (imkonsiz qiymat (yosh 250) — format to'g'ri (son; to_numeric xato bermaydi; outlier ham emas); faqat domen qoidasi (yosh 0-120) topadi; qoidasiz — yashirin); outlier bilan aralashtirish (outlier (6.3 — statistik chetki; 50000 maosh — haqiqiy bo'lishi mumkin) vs noto'g'ri (imkonsiz — yosh 250 hech qachon); farqla — outlier saqlash mumkin, noto'g'ri tuzat/o'chir); kombinatsiya e'tiborsiz (bir ustun tekshir — lekin kombinatsiya (yosh=8 + direktor) — ikkalasi alohida to'g'ri, birga imkonsiz; ustunlar orasi tekshir); ko'r-ko'rona tuzatish (250 → 25 — taxmin (manba bilmay); noto'g'ri tuzatish — yangi xato; manba/domen bilan yoki NaN); soha bilimi yo'q (domen qoida — soha (Data Scientist yolg'iz emas; soha eksperti — nima mumkin); noto'g'ri qoida — to'g'ri ma'lumotni o'chir); maxsus kod qiymat (-999, 9999, 0 — "yo'q" ma'nosida (kod; yashirin NaN — 6.1); noto'g'ri deb hisoblash — aslida NaN); statistika ko'rmaslik (describe() — min/max g'alatimi (yosh min -5, max 250 — darhol ko'rinadi); tekshir); qat'iy chegara (chegara qat'iy emas — yosh 120 (kamyob, lekin mumkin); 150 (imkonsiz); domen — oqilona chegara). Sabab: noto'g'ri qiymat domen/farq nozik (qoidasiz, outlier aralash, kombinatsiya, taxmin — topilmas yoki noto'g'ri). Yechim: domen qoida (soha), outlier farqla, kombinatsiya, manba tuzat, statistika. Tuzoqlar — domen yo'q, outlier aralash, kombinatsiya, taxmin.

2.8. Noto'g'ri qiymatlar — domen bilan topish va hal

Noto'g'ri qiymat asosiy g'oyasi — domen bilan topish va hal: mantiqan noto'g'ri qiymatlar (imkonsiz — yosh -5, foiz 150, narx manfiy; mantiqsiz — kelajak sana, imkonsiz kombinatsiya) sintaksis to'g'ri (son/sana — tur to'g'ri; format xato emas) lekin domen qoidasiga zid (soha — yosh 0-120); kompyuter topmaydi (format to'g'ri) — faqat mantiqiy tekshirish (domen bilimi). Diapazon tekshir (df[(df["x"] < min) | (df["x"] > max)] — imkonsiz), domen qoidasi (soha — yosh 0-120, foiz 0-100; soha bilimi), kombinatsiya (ustunlar orasi — & mantiqiy zid; yosh=8 + direktor), hal (tuzat aniq xato; NaN noaniq — 6.1; o'chir butun xato). Yetishmayotgan/outlier farqi (yetishmayotgan — yo'q NaN; outlier — statistik chetki; noto'g'ri — mantiqan imkonsiz — domen). Foydalanish: domen xatolarini topish (imkonsiz — format yashirgan), ma'lumot to'g'riligi (soha qoidasi). Tuzoqlar: domen yo'q (topilmas), outlier aralash (statistik vs mantiqiy), kombinatsiya e'tiborsiz, ko'r-ko'rona tuzat (manba), soha bilimi yo'q, maxsus kod (-999 — NaN). Bu 6.1 (yetishmayotgan), 6.3 (outlier), 6.8 (sana — kelajak), 6.11 (quvur) bilan. Noto'g'ri qiymatlar — domen bilan topish (diapazon, qoida, kombinatsiya) va hal (tuzat/NaN/o'chir). Domen. Mantiqiy. Imkonsiz.


3. Tez ma'lumotnoma

python
import pandas as pd
import numpy as np

# DIAPAZON TEKSHIRISH (imkonsiz):
df[(df["yosh"] < 0) | (df["yosh"] > 120)]    # imkonsiz yosh
df[(df["foiz"] < 0) | (df["foiz"] > 100)]    # foiz 0-100
df[~df["yosh"].between(0, 120)]              # oraliqdan tashqari

# DOMEN QOIDASI (soha bilimi):
#   yosh 0-120 · foiz 0-100 · oy 1-12 · kun 1-31 · baho 1-5

# KOMBINATSIYA (ustunlar orasi — imkonsiz birga):
df[(df["yosh"] < 16) & (df["ishlaydi"] == "ha")]        # 16 yoshgacha ishlaydi?
df[df["boshlanish"] > df["tugash"]]                     # sana zid

# HAL QILISH:
df.loc[df["yosh"] > 120, "yosh"] = np.nan    # NaN (keyin 6.1)
df.loc[df["yosh"] < 0, "yosh"] = df["yosh"].abs()  # tuzat (manba)

# STATISTIKA (g'alati qiymat):
df.describe()   # min/max g'alatimi?

# UCH TUR: yetishmayotgan (yo'q) · outlier (chetki) · noto'g'ri (imkonsiz)
QOIDA: domen qoidasi (soha) · diapazon · kombinatsiya · manba (tuzat)

Noto'g'ri qiymatlar xulosasi

Noto'g'ri qiymatlar — mantiqan noto'g'ri (imkonsiz/mantiqsiz; domen)
Diapazon — mumkin oraliq (yosh 0-120; imkonsiz — chegara)
Domen qoidasi — soha bilimi (nima mantiqiy)
Kombinatsiya — imkonsiz birga (yosh=8 + direktor)
Farq — yetishmayotgan (yo'q) / outlier (chetki) / noto'g'ri (imkonsiz)

4. Batafsil misollar

Misollar real pandas bilan (Python 3.14) ishlaydi.

Misol 1 — Diapazon tekshirish

python
"""Diapazon tekshirish (real pandas)."""

import pandas as pd


def main() -> None:
    df = pd.DataFrame({
        "yosh": [25, -5, 45, 250, 30],
        "foiz": [80, 95, 150, 60, 45],
    })

    print("=== 1. Imkonsiz yosh (0-120) ===")
    noto_yosh = df[(df["yosh"] < 0) | (df["yosh"] > 120)]
    print(f"  noto'g'ri yosh: {noto_yosh['yosh'].tolist()}")

    print("\n=== 2. Imkonsiz foiz (0-100) ===")
    noto_foiz = df[(df["foiz"] < 0) | (df["foiz"] > 100)]
    print(f"  noto'g'ri foiz: {noto_foiz['foiz'].tolist()}")

    print("\n=== 3. between (to'g'ri qatorlar) ===")
    tugri = df[df["yosh"].between(0, 120)]
    print(f"  to'g'ri yosh: {tugri['yosh'].tolist()}")

    print("\n=== 4. Format to'g'ri, mantiq xato ===")
    print(f"  yosh turi: {df['yosh'].dtype} (son — format to'g'ri)")
    print("  faqat domen (0-120) topadi")
    print("  ⭐ Diapazon — imkonsiz (domen)")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. Imkonsiz yosh (0-120) ===
  noto'g'ri yosh: [-5, 250]

=== 2. Imkonsiz foiz (0-100) ===
  noto'g'ri foiz: [150]

=== 3. between (to'g'ri qatorlar) ===
  to'g'ri yosh: [25, 45, 30]

=== 4. Format to'g'ri, mantiq xato ===
  yosh turi: int64 (son — format to'g'ri)
  faqat domen (0-120) topadi
  ⭐ Diapazon — imkonsiz (domen)

Nima ko'rsatdi: 2.1, 2.2-bo'limlar.

Misol 2 — Kombinatsiya (imkonsiz birga)

python
"""Kombinatsiya: imkonsiz birga (real pandas)."""

import pandas as pd


def main() -> None:
    df = pd.DataFrame({
        "yosh": [8, 30, 45, 12],
        "lavozim": ["direktor", "menejer", "ishchi", "o'quvchi"],
        "boshlanish": ["2024-01", "2024-03", "2024-06", "2024-02"],
        "tugash": ["2023-12", "2024-05", "2024-08", "2024-04"],
    })

    print("=== 1. Bir ustun to'g'ri ===")
    print(f"  yosh 8 — to'g'ri son (bola)")
    print(f"  direktor — to'g'ri lavozim")

    print("\n=== 2. Kombinatsiya noto'g'ri ===")
    shubhali = df[(df["yosh"] < 16) & (df["lavozim"] == "direktor")]
    print(f"  8 yoshli direktor: {len(shubhali)} qator (imkonsiz)")

    print("\n=== 3. Sana zid (boshlanish > tugash) ===")
    df["boshlanish"] = pd.to_datetime(df["boshlanish"])
    df["tugash"] = pd.to_datetime(df["tugash"])
    zid = df[df["boshlanish"] > df["tugash"]]
    print(f"  boshlanish > tugash: {len(zid)} qator")

    print("\n=== 4. Ustunlar orasi ===")
    print("  har ustun alohida to'g'ri, birga imkonsiz")
    print("  ⭐ Kombinatsiya — imkonsiz birga (mantiqiy)")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. Bir ustun to'g'ri ===
  yosh 8 — to'g'ri son (bola)
  direktor — to'g'ri lavozim

=== 2. Kombinatsiya noto'g'ri ===
  8 yoshli direktor: 1 qator (imkonsiz)

=== 3. Sana zid (boshlanish > tugash) ===
  boshlanish > tugash: 1 qator

=== 4. Ustunlar orasi ===
  har ustun alohida to'g'ri, birga imkonsiz
  ⭐ Kombinatsiya — imkonsiz birga (mantiqiy)

Nima ko'rsatdi: 2.3-bo'lim.

Misol 3 — Uch tur (farq)

python
"""Uch tur: yetishmayotgan/outlier/noto'g'ri (real pandas)."""

import numpy as np
import pandas as pd


def main() -> None:
    df = pd.DataFrame({"yosh": [25, np.nan, 45, 250, 85, 30]})

    print("=== 1. Yetishmayotgan (yo'q — NaN) ===")
    print(f"  NaN soni: {int(df['yosh'].isna().sum())}")

    print("\n=== 2. Outlier (chetki — statistik) ===")
    q1, q3 = df["yosh"].quantile([0.25, 0.75])
    iqr = q3 - q1
    outlier = df[(df["yosh"] > q3 + 1.5 * iqr) & (df["yosh"] <= 120)]
    print(f"  85 — outlier? (chetki, lekin mumkin — haqiqiy)")

    print("\n=== 3. Noto'g'ri (imkonsiz — domen) ===")
    noto = df[df["yosh"] > 120]
    print(f"  250 — imkonsiz yosh (domen): {noto['yosh'].tolist()}")

    print("\n=== 4. Farq ===")
    print("  yetishmayotgan: yo'q (NaN)")
    print("  outlier: chetki (85 — haqiqiy bo'lishi mumkin)")
    print("  noto'g'ri: imkonsiz (250 — hech qachon)")
    print("  ⭐ Uch tur (yo'q/chetki/imkonsiz)")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. Yetishmayotgan (yo'q — NaN) ===
  NaN soni: 1

=== 2. Outlier (chetki — statistik) ===
  85 — outlier? (chetki, lekin mumkin — haqiqiy)

=== 3. Noto'g'ri (imkonsiz — domen) ===
  250 — imkonsiz yosh (domen): [250.0]

=== 4. Farq ===
  yetishmayotgan: yo'q (NaN)
  outlier: chetki (85 — haqiqiy bo'lishi mumkin)
  noto'g'ri: imkonsiz (250 — hech qachon)
  ⭐ Uch tur (yo'q/chetki/imkonsiz)

Nima ko'rsatdi: 2.4-bo'lim.

Misol 4 — Hal qilish (NaN, tuzat)

python
"""Hal qilish: NaN, tuzat (real pandas)."""

import numpy as np
import pandas as pd


def main() -> None:
    df = pd.DataFrame({"yosh": [25, -30, 45, 250, 30], "daromad": [500, -1000, 700, 800, 600]})

    print("=== 1. Imkonsiz → NaN (noaniq) ===")
    df["yosh_toza"] = df["yosh"].where(df["yosh"].between(0, 120), np.nan)
    print(f"  {df['yosh_toza'].tolist()}")

    print("\n=== 2. Tuzatish (manfiy — abs?) ===")
    # faraz: manfiy daromad — belgi xatosi (abs bilan tuzat)
    df["daromad_toza"] = df["daromad"].abs()
    print(f"  {df['daromad_toza'].tolist()}")
    print("  (faqat manba tasdiqlasa — abs)")

    print("\n=== 3. NaN soni (keyin 6.1) ===")
    print(f"  yosh NaN: {int(df['yosh_toza'].isna().sum())}")

    print("\n=== 4. Kontekst ===")
    print("  aniq xato — tuzat (manba); noaniq — NaN; butun — o'chir")
    print("  ⭐ Hal — tuzat/NaN/o'chir (kontekst)")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. Imkonsiz → NaN (noaniq) ===
  [25.0, nan, 45.0, nan, 30.0]

=== 2. Tuzatish (manfiy — abs?) ===
  [500, 1000, 700, 800, 600]
  (faqat manba tasdiqlasa — abs)

=== 3. NaN soni (keyin 6.1) ===
  yosh NaN: 2

=== 4. Kontekst ===
  aniq xato — tuzat (manba); noaniq — NaN; butun — o'chir
  ⭐ Hal — tuzat/NaN/o'chir (kontekst)

Nima ko'rsatdi: 2.5-bo'lim.


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

Noto'g'ri fikr To'g'risi
"format to'g'ri = qiymat to'g'ri" Domen (mantiqan xato)
"noto'g'ri = outlier" Imkonsiz (outlier — chetki)
"bir ustun tekshir" Kombinatsiya (ustunlar orasi)
"kompyuter topadi" Domen bilimi (mantiqiy)
"har doim tuzat" Manba (noaniq — NaN)
"chegara qat'iy" Oqilona (120 mumkin, 150 yo'q)
"-999 = noto'g'ri" Kod (yashirin NaN)
"soha bilimi kerakmas" Domen qoidasi (soha)

6. Keng tarqalgan xatolar va yechimlari

1. Domen qoidasi yo'q

python
pd.to_numeric(df["yosh"])   # 250 — son (format to'g'ri)          # ⚠️
df[df["yosh"].between(0, 120)]   # domen (0-120)                 # ✅

2. Outlier bilan aralashtirish

python
# 250 yosh — outlier deb saqlash (imkonsiz!)                      # ⚠️
# 250 — noto'g'ri (imkonsiz — tuzat/o'chir)                      # ✅

3. Kombinatsiya e'tiborsiz

python
df[df["yosh"] < 16]   # faqat yosh (kombinatsiya yo'q)            # ⚠️
df[(df["yosh"] < 16) & (df["ishlaydi"] == "ha")]   # birga       # ✅

4. Ko'r-ko'rona tuzatish

python
df.loc[df["yosh"] > 120, "yosh"] = 25   # taxmin (manbasiz)       # ⚠️
df.loc[df["yosh"] > 120, "yosh"] = np.nan   # NaN (noaniq)       # ✅

5. Maxsus kod qiymat

python
# yosh -999 — noto'g'ri deb (aslida "yo'q" kodi)                  # ⚠️
df["yosh"].replace(-999, np.nan)   # yashirin NaN 6.1-bob          # ✅

6. Statistika ko'rmaslik

python
# domen tekshirmay (yosh min -5, max 250 ko'rinmaydi)             # ⚠️
df.describe()   # min/max g'alatimi                              # ✅

7. Qat'iy chegara

python
df[df["yosh"] > 100]   # 105 — kamyob, lekin mumkin (xato)        # ⚠️
df[df["yosh"] > 120]   # oqilona chegara (imkonsiz)             # ✅

7. Integratsiya — bu bilim qayerda kerak bo'ladi

  • 6.1-dars (o'tilgan): Yetishmayotgan (NaN — hal)
  • 6.3-dars (o'tilgan): Outlier (statistik vs mantiqiy)
  • 6.8-dars (o'tilgan): Sana (kelajak)
  • 6.11-dars: Tozalash quvuri
  • 20-qism (reja): ML (toza ma'lumot)

8. Eng yaxshi amaliyotlar

  1. Domen qoidasi — soha bilimi.

  2. Diapazon — imkonsiz (between).

  3. Kombinatsiya — ustunlar orasi (&).

  4. Statistika — describe() (g'alati min/max).

  5. Tuzat — manba (noaniq — NaN).

  6. Outlier farqla — statistik vs mantiqiy.

  7. Maxsus kod — -999 → NaN 6.1-bob.

  8. Oqilona chegara — 120 mumkin, 150 yo'q.


9. Amaliy topshiriq

Vazifa 1: Bashorat qiling

python
1.  # noto'g'ri qiymat nima?
2.  # imkonsiz misol?
3.  # domen qoidasi?
4.  # diapazon tekshirish?
5.  # kombinatsiya?
6.  # yetishmayotgandan farqi?
7.  # outlierdan farqi?
8.  # tuzatish qachon?
9.  # NaN qachon?
10. # kompyuter topadimi?
11. # -999 nima?
12. # nega domen?
Javoblar
  1. Mantiqan noto'g'ri (imkonsiz)
  2. Yosh -5, foiz 150
  3. Soha qoidasi (yosh 0-120)
  4. Mumkin oraliq (between)
  5. Imkonsiz birga (yosh=8 direktor)
  6. Yetishmayotgan yo'q; noto'g'ri imkonsiz
  7. Outlier chetki (haqiqiy); noto'g'ri imkonsiz
  8. Aniq xato (manba)
  9. Noaniq (6.1 hal)
  10. Yo'q (format to'g'ri — domen)
  11. Kod (yashirin NaN)
  12. Soha qoidasi (mantiqiy xato)

Vazifa 2: Xatolarni tuzating

python
1.  pd.to_numeric(df["yosh"])   # 250

2.  # 250 yosh — outlier deb saqlash

3.  df[df["yosh"] < 16]   # kombinatsiya

4.  df.loc[df["yosh"] > 120, "yosh"] = 25

5.  # yosh -999 — noto'g'ri deb
Javoblar
python
1.  between(0, 120) (domen)

2.  noto'g'ri (imkonsiz — tuzat)

3.  & (df["ishlaydi"] == "ha")

4.  = np.nan (noaniq)

5.  replace(-999, np.nan) (kod)

Vazifa 3: Topish

Modellang:

  1. Diapazon
  2. Domen qoidasi
  3. Kombinatsiya
  4. Statistika

Vazifa 4: Farq

Modellang:

  1. Yetishmayotgan (yo'q)
  2. Outlier (chetki)
  3. Noto'g'ri (imkonsiz)
  4. Turli hal

Vazifa 5: Hal

Modellang:

  1. Tuzat (manba)
  2. NaN (noaniq)
  3. O'chir (butun)
  4. Belgila (shubhali)

Vazifa 6: Integratsiya

Modellang:

  1. Yetishmayotgan (6.1)
  2. Outlier (6.3)
  3. Sana (6.8)
  4. Quvur (6.11)

Vazifa 7: O'ylash

Noto'g'ri qiymatlar format jihatidan to'g'ri (son, sana) — kompyuter ularni topmaydi. Faqat domen (soha) bilimi ("yosh 0-120 bo'lishi kerak") ularni topadi. Bu shuni ko'rsatadiki, ma'lumot tozalash faqat texnik ko'nikma emas — soha bilimini talab qiladi. Nima uchun "ma'lumot tozalash domen bilimidan ajralmas" tamoyili muhim, va Data Scientist domen bilimini qanday oladi?

Javob

Qisqa javob: Noto'g'ri qiymatlar format to'g'ri (kompyuter topmaydi); faqat domen bilimi (yosh 0-120) topadi; ma'lumot tozalash domen bilimi talab qiladi (texnik emas); "tozalash domendan ajralmas" tamoyili muhim, Data Scientist domen bilimini turli yo'l bilan oladi, chunki: (1) format ≠ ma'no — kompyuter format biladi (son, sana — to'g'ri); lekin ma'no (yosh 250 imkonsiz) — domen (soha; kompyuter bilmaydi); (2) domen qoida — nima mumkin (yosh 0-120, foiz 0-100, oy 1-12) — soha (inson biologiya; matematika; biznes qoida); qoidasiz — noto'g'ri yashirin; (3) texnik yetmaydi — pd.to_numeric, between (texnik — vosita); lekin qaysi oraliq (0-120?) — domen (soha bilimi); (4) kontekst — bir ma'lumot turli sohada turli (yosh — inson 0-120; kompaniya 0-500; yulduz milliard; kontekst). "Nega domendan ajralmas": (a) ma'no — tozalash ma'no (to'g'ri/noto'g'ri — soha; format emas); (b) qoida manbasi — domen qoida soha (yosh chegara — biologiya; foiz — matematika; biznes — qoida); (c) kombinatsiya — imkonsiz birga (yosh=8 direktor — soha mantiq); (d) xato turi — soha xatoni biladi (o'lchov birligi, kiritish — soha). "Data Scientist domen bilimini qanday oladi": (1) soha eksperti (birga ishlash — shifokor, muhandis, iqtisodchi; nima mumkin — so'ra); (2) hujjat (ma'lumot lug'ati — data dictionary; ustun ma'nosi, oraliq, birlik); (3) o'rganish (soha o'qish — asoslar; kontekst); (4) statistika (describe() — g'alati qiymat; savol tug'iladi — nega?); (5) savol (g'alati ko'rib — so'ra; "yosh 250 — mumkinmi?"); (6) iteratsiya (tozalash → tekshir → soha bilan; takroriy). "Nega muhim": tozalash domen (format emas — ma'no); soha bilimi (qoida manbasi); ekspert (birga; so'ra). Saboqlar: tozalash domen (format ≠ ma'no); domen qoida (soha — yosh 0-120); texnik yetmaydi (qaysi oraliq — domen); domen olish (ekspert, hujjat, o'rganish, savol). To'g'ri: tozalash — domen bilan (format ≠ ma'no; soha qoida); domen olish (ekspert, hujjat, savol); iteratsiya. Muvozanat: texnik (vosita — between) + domen (qoida — soha; ma'no). Bu Data Science mohiyat asosiy (tozalash — domen; format ≠ ma'no; ekspert; soha bilimi). Noto'g'ri qiymatlar — domen bilan (soha qoida; tozalash domendan ajralmas).

1. Nega domendan ajralmas

  • Format ≠ ma'no (kompyuter format; domen ma'no)
  • Domen qoida (soha — yosh 0-120)
  • Texnik yetmaydi (qaysi oraliq — domen)
  • Kontekst (yosh — inson/kompaniya/yulduz)

2. Domen bilimini qanday olish

  • Soha eksperti (birga — so'ra)
  • Hujjat (data dictionary — oraliq, birlik)
  • O'rganish (soha asoslari)
  • Statistika + savol (g'alati — nega?)

3. Format vs domen

Format (kompyuter) Domen (soha)
Son, sana (to'g'ri) Ma'no (imkonsiz)
to_numeric Yosh 0-120 (qoida)
Texnik Soha bilimi

4. Domen olish

  1. Soha eksperti (so'ra)
  2. Hujjat (data dictionary)
  3. O'rganish (soha)
  4. Statistika + savol

5. Xulosa

  1. Noto'g'ri qiymat — format to'g'ri (domen topadi)
  2. Tozalash domen bilimi (texnik emas — ma'no)
  3. Domen qoida (soha — yosh 0-120; ekspert)
  4. Domen olish (ekspert, hujjat, o'rganish, savol)

Nimani mustahkamlaydi: 2.2, 2.7-bo'limlar.


Xulosa

Bu darsda noto'g'ri qiymatlarni o'rgandik.

Eng muhim uch fikr:

  1. Diapazon va domen. Noto'g'ri qiymatlar — mantiqan noto'g'ri (imkonsiz — yosh -5, foiz 150; mantiqsiz — kelajak sana); format to'g'ri (son/sana — tur to'g'ri) lekin domen qoidasiga zid. Diapazon tekshir (df[(df["x"] < min) | (df["x"] > max)], between). Domen qoidasi — soha bilimi (yosh 0-120, foiz 0-100, oy 1-12; kompyuter bilmaydi — domen).

  2. Kombinatsiya va farq. Kombinatsiya — ustunlar orasi (bir ustun to'g'ri, birga imkonsiz — yosh=8 + lavozim="direktor"; boshlanish > tugash; & mantiqiy). Uch tur farqi: yetishmayotgan (6.1 — yo'q; NaN), outlier (6.3 — chetki; statistik, haqiqiy bo'lishi mumkin), noto'g'ri (imkonsiz — domen, mantiqan xato).

  3. Domen bilan. Hal — tuzatish (aniq xato — manba), NaN (noaniq — 6.1 hal), o'chirish (butun qator xato). Ma'lumot tozalash domen bilimidan ajralmas (format ≠ ma'no; soha qoida — ekspert, hujjat, savol). Tuzoqlar: domen yo'q (topilmas), outlier bilan aralash (statistik vs mantiqiy — 250 imkonsiz, saqlama), kombinatsiya e'tiborsiz, ko'r-ko'rona tuzat (manba), maxsus kod (-999 — yashirin NaN 6.1), statistika (describe() — g'alati min/max), qat'iy chegara (oqilona — 120 mumkin).

Keyingi darsda tozalash quvuri (cleaning pipeline)ni o'rganamiz: barcha tozalash qadamlarini (6.1-6.10) izchil, takrorlanuvchi funksiya/quvurga birlashtirish (sklearn Pipeline, funksiya) — bir marta yozib, har ma'lumotga qo'llash.

Ulashish:Telegram'da

Izohlar (0)

Izoh yozish uchun kiring.

  • Hozircha izoh yo'q. Birinchi bo'ling!
6.10-dars: Noto'g'ri qiymatlar — IlmHamroh