Mundarija (22)
- 1. Kirish va motivatsiya
- 2. Nazariya — chuqur tushuntirish
- 2.1. Diapazon tekshirish (imkonsiz)
- 2.2. Domen qoidasi (soha)
- 2.3. Kombinatsiya (imkonsiz birga)
- 2.4. Yetishmayotgan/outlier farqi
- 2.5. Hal qilish (tuzatish, NaN)
- 2.6. Noto'g'ri qiymat amaliyoti
- 2.7. Noto'g'ri qiymat tuzoqlari
- 2.8. Noto'g'ri qiymatlar — domen bilan topish va hal
- 3. Tez ma'lumotnoma
- 4. Batafsil misollar
- Misol 1 — Diapazon tekshirish
- Misol 2 — Kombinatsiya (imkonsiz birga)
- Misol 3 — Uch tur (farq)
- Misol 4 — Hal qilish (NaN, tuzat)
- 5. To'g'ri va noto'g'ri tushunishlar
- 6. Keng tarqalgan xatolar va yechimlari
- 7. Integratsiya — bu bilim qayerda kerak bo'ladi
- 8. Eng yaxshi amaliyotlar
- 9. Amaliy topshiriq
- Xulosa
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:
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
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
"""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:
=== 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)
"""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:
=== 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)
"""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:
=== 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)
"""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:
=== 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
pd.to_numeric(df["yosh"]) # 250 — son (format to'g'ri) # ⚠️
df[df["yosh"].between(0, 120)] # domen (0-120) # ✅2. Outlier bilan aralashtirish
# 250 yosh — outlier deb saqlash (imkonsiz!) # ⚠️
# 250 — noto'g'ri (imkonsiz — tuzat/o'chir) # ✅3. Kombinatsiya e'tiborsiz
df[df["yosh"] < 16] # faqat yosh (kombinatsiya yo'q) # ⚠️
df[(df["yosh"] < 16) & (df["ishlaydi"] == "ha")] # birga # ✅4. Ko'r-ko'rona tuzatish
df.loc[df["yosh"] > 120, "yosh"] = 25 # taxmin (manbasiz) # ⚠️
df.loc[df["yosh"] > 120, "yosh"] = np.nan # NaN (noaniq) # ✅5. Maxsus kod qiymat
# 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
# domen tekshirmay (yosh min -5, max 250 ko'rinmaydi) # ⚠️
df.describe() # min/max g'alatimi # ✅7. Qat'iy chegara
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
Domen qoidasi — soha bilimi.
Diapazon — imkonsiz (
between).Kombinatsiya — ustunlar orasi (
&).Statistika —
describe()(g'alati min/max).Tuzat — manba (noaniq — NaN).
Outlier farqla — statistik vs mantiqiy.
Maxsus kod —
-999→ NaN 6.1-bob.Oqilona chegara — 120 mumkin, 150 yo'q.
9. Amaliy topshiriq
Vazifa 1: Bashorat qiling
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
- Mantiqan noto'g'ri (imkonsiz)
- Yosh -5, foiz 150
- Soha qoidasi (yosh 0-120)
- Mumkin oraliq (between)
- Imkonsiz birga (yosh=8 direktor)
- Yetishmayotgan yo'q; noto'g'ri imkonsiz
- Outlier chetki (haqiqiy); noto'g'ri imkonsiz
- Aniq xato (manba)
- Noaniq (6.1 hal)
- Yo'q (format to'g'ri — domen)
- Kod (yashirin NaN)
- Soha qoidasi (mantiqiy xato)
Vazifa 2: Xatolarni tuzating
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 debJavoblar
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:
- Diapazon
- Domen qoidasi
- Kombinatsiya
- Statistika
Vazifa 4: Farq
Modellang:
- Yetishmayotgan (yo'q)
- Outlier (chetki)
- Noto'g'ri (imkonsiz)
- Turli hal
Vazifa 5: Hal
Modellang:
- Tuzat (manba)
- NaN (noaniq)
- O'chir (butun)
- Belgila (shubhali)
Vazifa 6: Integratsiya
Modellang:
- Yetishmayotgan (6.1)
- Outlier (6.3)
- Sana (6.8)
- 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
- Soha eksperti (so'ra)
- Hujjat (data dictionary)
- O'rganish (soha)
- Statistika + savol
5. Xulosa
- Noto'g'ri qiymat — format to'g'ri (domen topadi)
- Tozalash domen bilimi (texnik emas — ma'no)
- Domen qoida (soha — yosh 0-120; ekspert)
- 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:
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).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).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.
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!