Mundarija (22)
- 1. Kirish va motivatsiya
- 2. Nazariya — chuqur tushuntirish
- 2.1. Audit (ma'lumotni tekshirish)
- 2.2. To'liq tozalash quvuri
- 2.3. Tasdiqlash (verify)
- 2.4. Jarayon (audit → tozalash → tasdiq)
- 2.5. Tozalash hisoboti
- 2.6. Loyiha amaliyoti
- 2.7. Loyiha tuzoqlari
- 2.8. To'liq tozalash — barcha bilim birga
- 3. Tez ma'lumotnoma
- 4. Batafsil misollar
- Misol 1 — Audit (muammolarni topish)
- Misol 2 — To'liq tozalash quvuri
- Misol 3 — Tasdiqlash (verify)
- Misol 4 — Tozalash hisoboti
- 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.12-dars: Amaliyot (to'liq tozalash loyihasi)
6-QISM — MA'LUMOTNI TOZALASH · 12-dars (yakuniy)
1. Kirish va motivatsiya
6-qismda ma'lumotni tozalashni o'rgandik: yetishmayotgan qiymat 6.1-bob, dublikat 6.2-bob, outlier 6.3-bob, tur o'zgartirish 6.4-bob, normalizatsiya 6.5-bob, standartlashtirish 6.6-bob, matn tozalash 6.7-bob, sana tozalash 6.8-bob, kategoriya kodlash 6.9-bob, noto'g'ri qiymat 6.10-bob, tozalash quvuri 6.11-bob. Endi hammasini bir loyihada birlashtiramiz: real iflos ma'lumot (barcha muammo bilan) ni to'liq tozalash quvuri orqali tahlilga tayyorlaymiz. Bu qism yakuni — tozalash jarayonini boshdan oxir ko'rsatadi: tekshirish (audit) → tozalash (qadamlar) → tasdiqlash (verify). Bu Data Scientist ishining eng katta qismi (80%) — iflos ma'lumotni ishonchli ma'lumotga aylantirish. Nega muhim? (1) Sintez — barcha qadam birga (loyiha); (2) Jarayon — audit → tozalash → tasdiq; (3) Ishonchli ma'lumot — tahlil/model uchun asos. Bu dars tozalash loyihasini o'rgatadi — barcha bilim birga.
To'liq tozalash loyihasi — barcha bilim birga: audit (ma'lumotni tekshirish — info, describe, isna; muammolar), tozalash quvuri (6.11 — qadamlar izchil; matn→tur→dublikat→noto'g'ri→NaN→outlier→kodlash), tasdiqlash (natija — toza; qoidalar qoniqtiriladi), jarayon (audit → tozalash → tasdiq), hisobot (nima qilindi — hujjat). Foydalanish: iflos ma'lumotni ishonchli qilish, tahlil/model uchun asos. Bu 6.1-6.11 (butun 6-qism) sintezi. To'liq tozalash loyihasi — barcha bilim birga. Audit. Tozalash. Tasdiq.
Real vaziyat. Data Scientist do'kon savdo ma'lumotini (CSV — iflos) tahlilga tayyorlamoqchi. Iflos ma'lumot (barcha muammo): narx matn ("1,200", "-"), sana turli format, shahar turli ko'rinish ("Toshkent", "toshkent "), dublikat qatorlar, yosh 250 (imkonsiz), daromad NaN, outlier savdo. Jarayon: (1) audit (df.info(), df.describe(), df.isna().sum() — muammolar ro'yxati), (2) tozalash quvuri (matn normallashtir → tur o'zgartir → dublikat o'chir → noto'g'ri NaN → NaN to'ldir → outlier clip → kkategoriya kodla), (3) tasdiqlash (df.isna().sum()=0, dublikat=0, yosh 0-120). Data Scientist audit qildi, tozaladi (quvur), tasdiqladi (toza). To'liq tozalash loyihasi — barcha bilim birga.
Bu darsda tozalash loyihasini bajaramiz.
Bu darsda:
- Audit (ma'lumotni tekshirish)
- To'liq tozalash quvuri
- Tasdiqlash (verify)
- Jarayon (audit → tozalash → tasdiq)
- Tozalash hisoboti
- Loyiha amaliyoti
- Loyiha tuzoqlari
- Amaliy: to'liq loyiha
ℹ Misollar real pandas/numpy bilan (Python 3.14) ishlaydi.
2. Nazariya — chuqur tushuntirish
2.1. Audit (ma'lumotni tekshirish)
Muammolarni topish:
import pandas as pd
# AUDIT — ma'lumotni tekshirish (tozalashdan oldin)
df.info() # turlar, NaN, xotira
df.describe() # son statistika (min/max g'alatimi?)
df.isna().sum() # yetishmayotgan (ustun bo'yicha)
df.duplicated().sum() # dublikat
df["shahar"].unique() # kategoriya (turli ko'rinish?)
df.dtypes # turlar (object — matn?) Audit (ma'lumotni tekshirish) — muammolarni topish: tozalashdan oldin — ma'lumotni tekshirish (qanday muammolar); df.info() (turlar, NaN, xotira), df.describe() (son statistika — min/max g'alatimi; yosh min -5?), df.isna().sum() (yetishmayotgan), df.duplicated().sum() (dublikat), df["x"].unique() (kategoriya — turli ko'rinish?), df.dtypes (turlar — object?). Sabab: birinchi qadam — muammoni bilish (nima iflos; qanday tozalash); "ma'lumotni tanish" (audit — muammo ro'yxati); tozalash auditga asoslanadi. info/describe/isna/duplicated/unique/dtypes (audit vositalari), muammo ro'yxati (nima tozalash). Audit — ma'lumotni tekshirish (muammo topish). Audit. Muammo.
2.2. To'liq tozalash quvuri
Barcha qadam:
import pandas as pd
import numpy as np
def tozala(df):
"""To'liq tozalash quvuri (6.1-6.10)."""
df = df.copy()
# 1. matn 6.7-bob — dublikatdan OLDIN
df["shahar"] = df["shahar"].str.strip().str.lower()
# 2. tur (6.4)
df["narx"] = pd.to_numeric(df["narx"].str.replace(",", ""), errors="coerce")
df["sana"] = pd.to_datetime(df["sana"], errors="coerce")
# 3. dublikat (6.2)
df = df.drop_duplicates()
# 4. noto'g'ri → NaN (6.10)
df.loc[~df["yosh"].between(0, 120), "yosh"] = np.nan
# 5. NaN to'ldirish (6.1)
df["yosh"] = df["yosh"].fillna(df["yosh"].median())
# 6. outlier clip (6.3)
q1, q3 = df["narx"].quantile([0.25, 0.75])
iqr = q3 - q1
df["narx"] = df["narx"].clip(q1 - 1.5 * iqr, q3 + 1.5 * iqr)
return df.reset_index(drop=True) To'liq tozalash quvuri — barcha qadam: def tozala(df) (6.11 — barcha qadam izchil; copy, return); tartib (bog'liqlik): matn (6.7 — dublikatdan oldin) → tur (6.4 — matn→son/sana) → dublikat 6.2-bob → noto'g'ri→NaN 6.10-bob → NaN to'ldir 6.1-bob → outlier clip 6.3-bob → kodlash (6.9 — model oldin). Sabab: izchil (bir quvur — barcha qadam; 6.11); tartib (matn oldin dublikat; tur oldin outlier); har ma'lumotga qayta qo'llash. Barcha qadam (6.1-6.10), tartib (bog'liqlik), funksiya (6.11 — takror). To'liq tozalash quvuri — barcha qadam (izchil; tartib). Quvur. Qadam.
2.3. Tasdiqlash (verify)
Tasdiqlash (verify) — natija toza: tozalashdan keyin — natijani tekshirish (toza bo'ldimi): df.isna().sum() (NaN=0?), df.duplicated().sum() (dublikat=0?), df["yosh"].between(0, 120).all() (qoidalar?), df.dtypes (turlar to'g'ri?), df.describe() (statistika oqilona?). Sabab: tasdiqlash — tozalash ishladimi (qadam to'g'ri; qoidalar qoniqtiriladi); "ishon, lekin tekshir" (tozalash — tekshir); audit → tozalash → tasdiq (aylana). isna/duplicated/qoida/dtypes (tasdiq), toza (qoidalar qoniqtiriladi). Tasdiqlash — natija toza (tekshir; qoida). Tasdiq. Tekshir.
2.4. Jarayon (audit → tozalash → tasdiq)
Jarayon (audit → tozalash → tasdiq) — aylana: to'liq tozalash jarayon: (1) audit (muammo topish — info, describe, isna), (2) tozalash (quvur — qadamlar; audit asosida), (3) tasdiqlash (natija toza — tekshir), (4) takror (kerak bo'lsa — yangi muammo → tozalash). Sabab: tizimli (tasodifiy emas — audit muammoni, tozalash hal, tasdiq tekshir); iteratsiya (tasdiqda yangi muammo → qayta); "o'lcha, tozala, tekshir" (jarayon). Audit (muammo), tozalash (hal), tasdiq (tekshir), iteratsiya (takror). Jarayon — audit→tozalash→tasdiq (tizimli; iteratsiya). Jarayon. Aylana.
2.5. Tozalash hisoboti
Tozalash hisoboti — nima qilindi: tozalash hujjat (qanday tozalandi — qadamlar, qarorlar): audit natijasi (qancha NaN, dublikat, outlier — boshlang'ich), qadamlar (nima qilindi — matn, dublikat o'chir, NaN median), qarorlar (nega — median (outlier), o'chir (imkonsiz)), natija (necha qator qoldi, qancha o'zgardi). Sabab: takrorlanuvchanlik (6.11 — nima qilindi; audit uchun; boshqa odam takrorlaydi); shaffoflik (qarorlar — nega; ma'lumot ishonchi); "tozalash — qaror ketma-ketligi" (hujjatla). Audit → qadam → qaror → natija (hisobot), shaffof (qanday, nega). Tozalash hisoboti — nima qilindi (hujjat; shaffof). Hisobot. Shaffof.
2.6. Loyiha amaliyoti
Loyiha amaliyoti: audit (info/describe/isna/duplicated/unique — muammo ro'yxati); reja (qaysi qadam — audit asosida; tartib); tozalash quvuri (def tozala(df) — barcha qadam; tartib — matn oldin); tasdiqlash (isna=0, dublikat=0, qoidalar); iteratsiya (yangi muammo → qayta); hisobot (nima qilindi — hujjat); saqlash (toza ma'lumot — to_csv; keyingi bosqich). Tuzoqlar: auditsiz (muammo bilmay), tartib xato (matn oldin), tasdiqsiz (toza deb — tekshirmay), ko'r-ko'rona (audit asosida), hujjatsiz (takror yo'q). Amaliyot — audit, tozalash, tasdiq, hisobot. To'liq. Ishonchli.
2.7. Loyiha tuzoqlari
To'liq tozalash loyiha asosiy tuzoqlari: auditsiz tozalash (muammoni bilmay tozalash — ko'r-ko'rona; audit birinchi — info/describe/isna muammo ro'yxati); tartib xato (6.11 — matn (6.7) oldin dublikat 6.2-bob; tur 6.4-bob oldin outlier 6.3-bob; noto'g'ri tartib — xato); tasdiqsiz (tozalab tekshirmay ("toza deb faraz") — qadam ishlamagan bo'lishi mumkin; tasdiqlash — isna=0, qoidalar); ko'r-ko'rona qaror (median/o'chir — audit/domen asosida emas; taxmin); hujjatsiz (qanday tozalandi — yozilmagan; takrorlab bo'lmas; hisobot); ma'lumot yo'qotish (ko'p o'chirish — dropna/dublikat/outlier; ma'lumot kamaydi; to'ldir/clip afzal); sizish (o'quv/test — tozalash o'quvdan; test sizish — 6.5); bir marta (tozalash jarayon (audit→tozalash→tasdiq→takror); bir martada emas — iteratsiya); asl yo'qotish (copy yo'q — asl o'zgaradi; asl saqla — taqqoslash); haddan tashqari tozalash (har chetki o'chir — haqiqiy ma'lumot yo'q; outlier — saqla mumkin 6.3). Sabab: loyiha jarayon/tartib/tasdiq nozik (auditsiz, tartib, tasdiqsiz — xato yoki ma'lumot yo'q). Yechim: audit birinchi, to'g'ri tartib, tasdiqlash, domen qaror, hujjat. Tuzoqlar — auditsiz, tartib, tasdiqsiz, hujjatsiz.
2.8. To'liq tozalash — barcha bilim birga
To'liq tozalash loyiha asosiy g'oyasi — barcha bilim birga: 6-qism (6.1-6.11 — NaN, dublikat, outlier, tur, normalizatsiya, matn, sana, kcategory, noto'g'ri, quvur) bir loyihada (real iflos ma'lumot → ishonchli ma'lumot). Jarayon: audit (ma'lumotni tekshirish — info/describe/isna/duplicated/unique; muammo ro'yxati) → tozalash quvuri (6.11 — def tozala(df); qadamlar izchil; tartib — matn→tur→dublikat→noto'g'ri→NaN→outlier→kodlash) → tasdiqlash (natija toza — isna=0, dublikat=0, qoidalar) → iteratsiya (yangi muammo → qayta) → hisobot (nima qilindi — hujjat; takrorlanuvchanlik). Foydalanish: iflos ma'lumotni ishonchli qilish (Data Scientist ishi 80% — tozalash), tahlil/model uchun asos (toza ma'lumot — 5-qism vizualizatsiya, 20-qism ML; "garbage in, garbage out" — toza kirish, to'g'ri chiqish). Tuzoqlar: auditsiz (ko'r-ko'rona), tartib xato (matn oldin), tasdiqsiz (tekshirmay), ko'r-ko'rona qaror (domen), hujjatsiz (takror yo'q), ma'lumot yo'qotish (to'ldir/clip), sizish (o'quv/test). Bu 6.1-6.11 (butun 6-qism) sintezi va 3-qism (pandas), 5-qism (vizualizatsiya), 20-qism (ML) bilan. To'liq tozalash — barcha bilim birga (audit → tozalash → tasdiq; iflos → ishonchli). Audit. Tozalash. Tasdiq. Ishonchli.
3. Tez ma'lumotnoma
import pandas as pd
import numpy as np
# 1. AUDIT (muammolarni topish):
df.info(); df.describe(); df.isna().sum(); df.duplicated().sum()
df["shahar"].unique() # kategoriya turli ko'rinish?
# 2. TOZALASH QUVURI (barcha qadam — tartib muhim):
def tozala(df):
df = df.copy()
df["shahar"] = df["shahar"].str.strip().str.lower() # 6.7 matn (OLDIN)
df["narx"] = pd.to_numeric(df["narx"].str.replace(",", ""), errors="coerce") # 6.4 tur
df = df.drop_duplicates() # 6.2 dublikat
df.loc[~df["yosh"].between(0, 120), "yosh"] = np.nan # 6.10 noto'g'ri
df["yosh"] = df["yosh"].fillna(df["yosh"].median()) # 6.1 NaN
return df.reset_index(drop=True)
toza = tozala(xom)
# 3. TASDIQLASH (verify):
assert toza.isna().sum().sum() == 0 # NaN yo'q
assert toza.duplicated().sum() == 0 # dublikat yo'q
assert toza["yosh"].between(0, 120).all() # qoidalar
# JARAYON: audit → tozalash → tasdiq → (iteratsiya) → hisobot
QOIDA: audit birinchi · tartib (matn oldin) · tasdiqla · hujjatlaTo'liq tozalash xulosasi
To'liq tozalash — barcha bilim birga (audit → tozalash → tasdiq)
Audit — info/describe/isna/duplicated/unique (muammo ro'yxati)
Tozalash quvuri — barcha qadam izchil (tartib: matn oldin)
Tasdiqlash — natija toza (isna=0, dublikat=0, qoidalar)
Jarayon — audit → tozalash → tasdiq → iteratsiya → hisobot4. Batafsil misollar
Misollar real pandas/numpy bilan (Python 3.14) ishlaydi.
Misol 1 — Audit (muammolarni topish)
"""Audit: muammolarni topish (real pandas)."""
import numpy as np
import pandas as pd
def main() -> None:
df = pd.DataFrame({
"shahar": ["Toshkent", "toshkent ", "SAMARQAND", "Toshkent"],
"narx": ["1,200", "800", "1,500", "1,200"],
"yosh": [25, 25, 250, np.nan],
})
print("=== 1. Turlar (dtypes) ===")
print(f" narx turi: {df['narx'].dtype} (object — matn!)")
print("\n=== 2. Yetishmayotgan (isna) ===")
print(f" NaN: {df.isna().sum().sum()}")
print("\n=== 3. Dublikat ===")
print(f" dublikat: {int(df.duplicated().sum())}")
print("\n=== 4. Kategoriya (unique) ===")
print(f" shaharlar: {df['shahar'].nunique()} (turli ko'rinish!)")
print(" ⭐ Audit — muammolar ro'yxati")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. Turlar (dtypes) ===
narx turi: str (object — matn!)
=== 2. Yetishmayotgan (isna) ===
NaN: 1
=== 3. Dublikat ===
dublikat: 0
=== 4. Kategoriya (unique) ===
shaharlar: 3 (turli ko'rinish!)
⭐ Audit — muammolar ro'yxatiNima ko'rsatdi: 2.1-bo'lim.
Misol 2 — To'liq tozalash quvuri
"""To'liq tozalash quvuri (real pandas)."""
import numpy as np
import pandas as pd
def tozala(df):
"""To'liq tozalash (6.1-6.10)."""
df = df.copy()
df["shahar"] = df["shahar"].str.strip().str.lower() # 6.7
df["narx"] = pd.to_numeric(df["narx"].str.replace(",", ""), errors="coerce") # 6.4
df = df.drop_duplicates() # 6.2
df.loc[~df["yosh"].between(0, 120), "yosh"] = np.nan # 6.10
df["yosh"] = df["yosh"].fillna(df["yosh"].median()) # 6.1
return df.reset_index(drop=True)
def main() -> None:
xom = pd.DataFrame({
"shahar": ["Toshkent", "toshkent ", "SAMARQAND", "Toshkent"],
"narx": ["1,200", "800", "1,500", "1,200"],
"yosh": [25, 25, 250, np.nan],
})
print("=== 1. Xom ===")
print(f" qatorlar: {len(xom)}, narx turi: {xom['narx'].dtype}")
print("\n=== 2. Tozalash ===")
toza = tozala(xom)
print(f" qatorlar: {len(toza)} (dublikat o'chdi)")
print("\n=== 3. Natija ===")
print(f" shaharlar: {toza['shahar'].tolist()}")
print(f" narx turi: {toza['narx'].dtype} (son)")
print(f" yosh: {toza['yosh'].tolist()}")
print("\n=== 4. Barcha qadam ===")
print(" matn → tur → dublikat → noto'g'ri → NaN")
print(" ⭐ To'liq quvur — barcha qadam")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. Xom ===
qatorlar: 4, narx turi: str
=== 2. Tozalash ===
qatorlar: 4 (dublikat o'chdi)
=== 3. Natija ===
shaharlar: ['toshkent', 'toshkent', 'samarqand', 'toshkent']
narx turi: int64 (son)
yosh: [25.0, 25.0, 25.0, 25.0]
=== 4. Barcha qadam ===
matn → tur → dublikat → noto'g'ri → NaN
⭐ To'liq quvur — barcha qadamNima ko'rsatdi: 2.2-bo'lim.
Misol 3 — Tasdiqlash (verify)
"""Tasdiqlash: verify (real pandas)."""
import numpy as np
import pandas as pd
def tozala(df):
df = df.copy()
df["shahar"] = df["shahar"].str.strip().str.lower()
df = df.drop_duplicates()
df.loc[~df["yosh"].between(0, 120), "yosh"] = np.nan
df["yosh"] = df["yosh"].fillna(df["yosh"].median())
return df.reset_index(drop=True)
def main() -> None:
xom = pd.DataFrame({
"shahar": ["Toshkent", "toshkent ", "Toshkent"],
"yosh": [25, 250, np.nan],
})
toza = tozala(xom)
print("=== 1. NaN tasdiq ===")
nan_soni = int(toza.isna().sum().sum())
print(f" NaN: {nan_soni} (0 kutilgan: {nan_soni == 0})")
print("\n=== 2. Dublikat tasdiq ===")
dubl = int(toza.duplicated().sum())
print(f" dublikat: {dubl} (0 kutilgan: {dubl == 0})")
print("\n=== 3. Qoida tasdiq (yosh 0-120) ===")
qoida = bool(toza["yosh"].between(0, 120).all())
print(f" yosh 0-120: {qoida}")
print("\n=== 4. Barcha tasdiq ===")
hammasi = nan_soni == 0 and dubl == 0 and qoida
print(f" toza: {hammasi}")
print(" ⭐ Tasdiqlash — natija toza (tekshir)")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. NaN tasdiq ===
NaN: 0 (0 kutilgan: True)
=== 2. Dublikat tasdiq ===
dublikat: 2 (0 kutilgan: False)
=== 3. Qoida tasdiq (yosh 0-120) ===
yosh 0-120: True
=== 4. Barcha tasdiq ===
toza: False
⭐ Tasdiqlash — natija toza (tekshir)Nima ko'rsatdi: 2.3-bo'lim.
Misol 4 — Tozalash hisoboti
"""Tozalash hisoboti (real pandas)."""
import numpy as np
import pandas as pd
def main() -> None:
xom = pd.DataFrame({
"shahar": ["Toshkent", "toshkent ", "SAMARQAND", "Toshkent", "Buxoro"],
"yosh": [25, 25, 250, np.nan, 40],
})
print("=== 1. Audit (boshlang'ich) ===")
boshlangich = {
"qatorlar": len(xom),
"NaN": int(xom.isna().sum().sum()),
"dublikat": int(xom.duplicated().sum()),
"shaharlar": xom["shahar"].str.strip().str.lower().nunique(),
}
print(f" {boshlangich}")
print("\n=== 2. Tozalash ===")
df = xom.copy()
df["shahar"] = df["shahar"].str.strip().str.lower()
df = df.drop_duplicates()
df.loc[~df["yosh"].between(0, 120), "yosh"] = np.nan
df["yosh"] = df["yosh"].fillna(df["yosh"].median())
print("\n=== 3. Natija (hisobot) ===")
natija = {
"qatorlar": len(df),
"NaN": int(df.isna().sum().sum()),
"dublikat": int(df.duplicated().sum()),
}
print(f" {natija}")
print("\n=== 4. Qadamlar (hujjat) ===")
print(" matn normallashtir, dublikat o'chir, yosh median")
print(f" {boshlangich['qatorlar']} → {natija['qatorlar']} qator")
print(" ⭐ Hisobot — nima qilindi (shaffof)")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. Audit (boshlang'ich) ===
{'qatorlar': 5, 'NaN': 1, 'dublikat': 0, 'shaharlar': 3}
=== 2. Tozalash ===
=== 3. Natija (hisobot) ===
{'qatorlar': 4, 'NaN': 0, 'dublikat': 0}
=== 4. Qadamlar (hujjat) ===
matn normallashtir, dublikat o'chir, yosh median
5 → 4 qator
⭐ Hisobot — nima qilindi (shaffof)Nima ko'rsatdi: 2.5-bo'lim.
5. To'g'ri va noto'g'ri tushunishlar
| Noto'g'ri fikr | To'g'risi |
|---|---|
| "to'g'ridan tozalash" | Audit birinchi |
| "tartib muhim emas" | Bog'liqlik (matn oldin) |
| "tozalab tugadi" | Tasdiqla (verify) |
| "bir martada" | Jarayon (iteratsiya) |
| "hujjat ortiqcha" | Takrorlanuvchanlik |
| "ko'p o'chir" | Ma'lumot yo'qotish |
| "har chetki o'chir" | Outlier saqla mumkin |
| "tozalash kichik ish" | 80% ish (asos) |
6. Keng tarqalgan xatolar va yechimlari
1. Auditsiz tozalash
tozala(df) # muammoni bilmay (ko'r-ko'rona) # ⚠️
df.info(); df.isna().sum() # audit birinchi # ✅2. Tartib xato
df.drop_duplicates(); df["x"].str.lower() # dublikat oldin # ⚠️
df["x"] = df["x"].str.lower(); df.drop_duplicates() # matn oldin # ✅3. Tasdiqsiz
toza = tozala(df) # toza deb faraz (tekshirmay) # ⚠️
assert toza.isna().sum().sum() == 0 # tasdiqla # ✅4. Ko'r-ko'rona qaror
df["yosh"].fillna(0) # 0 (domen/audit asosida emas) # ⚠️
df["yosh"].fillna(df["yosh"].median()) # median (chidamli) # ✅5. Ma'lumot yo'qotish
df.dropna() # ko'p o'chir (1000 → 200) # ⚠️
df.fillna(...) # to'ldir (saqlaydi) # ✅6. Hujjatsiz
def tozala(df): ... # nima qilindi? (izoh yo'q) # ⚠️
def tozala(df): """Qadamlar: matn, tur, NaN.""" # ✅7. Asl yo'qotish
def tozala(df): df["x"] = ... # asl o'zgaradi # ⚠️
def tozala(df): df = df.copy() # asl saqla # ✅7. Integratsiya — bu bilim qayerda kerak bo'ladi
- 6.1-6.11 (o'tilgan): Barcha tozalash
- 3-qism (o'tilgan): Pandas (ma'lumot)
- 5-qism (o'tilgan): Vizualizatsiya (toza — tahlil)
- 20-qism (reja): ML (toza — model)
- Ish: Production (ishlab chiqarish)
8. Eng yaxshi amaliyotlar
Audit birinchi (muammoni bil).
Tartib — bog'liqlik (matn oldin).
Tasdiqla — verify (
assert).Jarayon — audit → tozalash → tasdiq.
Domen qaror — median, o'chir (audit).
To'ldir/clip — ma'lumot saqla.
Hujjatla — hisobot (takror).
copy()— asl saqla.
9. Amaliy topshiriq
Vazifa 1: Bashorat qiling
1. # tozalash loyihasi nima?
2. # audit nima?
3. # audit vositalari?
4. # tozalash quvuri?
5. # tartib nega?
6. # tasdiqlash?
7. # jarayon?
8. # hisobot nega?
9. # ko'r-ko'rona xato?
10. # ma'lumot yo'qotish?
11. # nega 80%?
12. # nega barcha birga?Javoblar
- Barcha bilim birga (audit→tozalash→tasdiq)
- Ma'lumotni tekshirish (muammo)
- info/describe/isna/duplicated/unique
- Barcha qadam izchil (funksiya)
- Bog'liqlik (matn oldin)
- Natija toza (verify)
- audit → tozalash → tasdiq
- Takrorlanuvchanlik (hujjat)
- Auditsiz (muammoni bilmay)
- Ko'p o'chir (to'ldir/clip)
- Iflos ma'lumot (asos)
- Sintez (loyiha)
Vazifa 2: Xatolarni tuzating
1. tozala(df) # audit yo'q
2. df.drop_duplicates(); df["x"].str.lower()
3. toza = tozala(df) # tasdiq yo'q
4. df["yosh"].fillna(0)
5. df.dropna() # 1000 → 200Javoblar
1. df.info() avval (audit)
2. str.lower() avval (matn oldin)
3. assert isna().sum() == 0
4. fillna(median) (chidamli)
5. fillna (to'ldirish — saqlaydi)Vazifa 3: Audit
Modellang:
- info
- describe
- isna
- Muammo ro'yxati
Vazifa 4: Tozalash
Modellang:
- Funksiya
- Tartib
- Barcha qadam
- copy
Vazifa 5: Tasdiq va jarayon
Modellang:
- isna=0
- Qoidalar
- audit→tozalash→tasdiq
- Iteratsiya
Vazifa 6: Integratsiya
Modellang:
- Barcha (6.1-6.11)
- Pandas (3)
- Vizualizatsiya (5)
- ML (20)
Vazifa 7: O'ylash
Ma'lumot tozalash Data Scientist ishining eng katta qismi (80%) — lekin ko'pincha e'tiborsiz qoldiriladi (model "qiziqroq"). "Garbage in, garbage out" (axlat kirsa, axlat chiqadi) — eng murakkab model ham iflos ma'lumotdan yaxshi natija bera olmaydi. Nima uchun tozalash modeldan ko'ra muhimroq bo'lishi mumkin, va nima uchun bu Data Science'da ko'pincha baholanmaydi?
Javob
Qisqa javob: Tozalash 80% ish, lekin e'tiborsiz (model "qiziqroq"); "garbage in, garbage out" (iflos kirish — iflos chiqish; eng murakkab model ham iflos ma'lumotdan yaxshi natija berolmaydi); tozalash modeldan muhimroq bo'lishi mumkin, ko'pincha baholanmaydi, chunki: (1) poydevor — model ma'lumotga quriladi (iflos ma'lumot — model iflos o'rganadi; NaN, xato, noto'g'ri — model chalg'iydi); toza ma'lumot — asos (yaxshi ma'lumot + oddiy model > iflos ma'lumot + murakkab model); (2) garbage in, garbage out — kirish iflos → chiqish iflos (model tuzatolmaydi ma'lumotni; noto'g'ri yosh 250 — model o'rganadi; soxta naqsh); (3) ta'sir — tozalash natijaga bevosita (NaN to'ldirish, outlier — model boshqa; tozalash o'zgarsa — natija o'zgaradi); (4) ko'p vaqt — 80% ish (audit, tozalash, tasdiq; sekin, mashaqqatli). "Nega baholanmaydi": (a) zerikarli — tozalash mashaqqatli (bir xil, detal; model — "aqlli", qiziq); (b) ko'rinmas — tozalash fonda (natijada ko'rinmaydi; model — yulduz); (c) nomahsul ko'rinadi (tozalash — yangi narsa emas; model — natija); (d) o'rgatilmaydi (kurslar — model; tozalash kam; real ish — teskari); (e) shon-shuhrat yo'q (yangi model — maqola; tozalash — yo'q). "Nega muhimroq bo'lishi mumkin": (1) asos (iflos ma'lumot — model foydasiz; toza — oddiy model ishlaydi); (2) ROI (tozalash yaxshilash — katta ta'sir; model murakkablashtirish — kichik); (3) ishonch (toza ma'lumot — ishonchli natija; iflos — shubhali); (4) xato manbai (ko'p xato — ma'lumot (tozalamagan); model emas). "Data Scientist qanday yondashadi": (1) jiddiy (tozalash — 80%; e'tibor; model kabi muhim); (2) jarayon (audit→tozalash→tasdiq; tizimli); (3) quvur (6.11 — izchil, takror); (4) hujjat (nima qilindi — shaffof); (5) domen (soha bilan — qaror); (6) avval tozalash (model oldin — asos). "Nega Data Science'da markaziy": tozalash poydevor (garbage in, garbage out); model ma'lumotga (iflos — foydasiz); 80% ish (asos); e'tibor (model kabi). Saboqlar: tozalash poydevor (model ma'lumotga); garbage in, garbage out (iflos — model tuzatolmas); 80% ish (asos — muhimroq); baholanmaydi (zerikarli, ko'rinmas) lekin markaziy. To'g'ri: tozalash — asos (model poydevori; iflos — foydasiz); 80% ish (muhim); jiddiy (jarayon, quvur, domen). Muvozanat: model (natija — muhim) + tozalash (asos — muhimroq; garbage in, garbage out). Bu Data Science mohiyat asosiy (tozalash — poydevor; garbage in, garbage out; 80%; e'tibor). To'liq tozalash — barcha bilim birga (asos — model poydevori; jiddiy yondashuv).
1. Nega tozalash muhimroq bo'lishi mumkin
- Poydevor (model ma'lumotga — iflos foydasiz)
- Garbage in, garbage out (model tuzatolmas)
- Ta'sir (tozalash — natijaga bevosita)
- ROI (tozalash yaxshilash — katta ta'sir)
2. Nega baholanmaydi
- Zerikarli (mashaqqatli — model qiziq)
- Ko'rinmas (fonda — model yulduz)
- O'rgatilmaydi (kurslar — model; real teskari)
- Shon-shuhrat yo'q (model — maqola)
3. Model vs tozalash
| Model (baholanadi) | Tozalash (baholanmaydi) |
|---|---|
| "Aqlli", qiziq | Mashaqqatli, detal |
| Yulduz (natija) | Poydevor (asos) |
| 20% ish | 80% ish |
4. Qanday yondashuv
- Jiddiy (80% — model kabi muhim)
- Jarayon (audit→tozalash→tasdiq)
- Quvur (izchil, takror)
- Domen (soha — qaror; hujjat)
5. Xulosa
- Tozalash poydevor (model ma'lumotga — iflos foydasiz)
- Garbage in, garbage out (model iflosni tuzatolmas)
- 80% ish (asos — muhimroq bo'lishi mumkin)
- Baholanmaydi (zerikarli, ko'rinmas) lekin markaziy (jiddiy)
Nimani mustahkamlaydi: 2.6, 2.8-bo'limlar.
Xulosa
Bu darsda to'liq tozalash loyihasini bajardik va 6-qismni yakunladik.
Eng muhim uch fikr:
Audit va tozalash quvuri. Audit (tozalashdan oldin) —
df.info(),df.describe()(min/max g'alatimi),df.isna().sum(),df.duplicated().sum(),df["x"].unique()(kcategory),df.dtypes(muammo ro'yxati). To'liq tozalash quvuri (6.11 —def tozala(df);copy,return) — barcha qadam tartib bilan (bog'liqlik): matn (6.7 oldin) → tur 6.4-bob → dublikat 6.2-bob → noto'g'ri→NaN 6.10-bob → NaN to'ldir 6.1-bob → outlier clip 6.3-bob → kodlash 6.9-bob.Tasdiqlash va jarayon. Tasdiqlash (tozalashdan keyin) —
df.isna().sum()=0,df.duplicated().sum()=0,df["yosh"].between(0, 120).all()(qoidalar;assert). Jarayon — audit → tozalash → tasdiq → iteratsiya (yangi muammo → qayta) → hisobot (nima qilindi — hujjat; takrorlanuvchanlik, shaffoflik).Barcha bilim birga. To'liq tozalash — butun 6-qism sintezi (6.1-6.11; iflos → ishonchli). Data Scientist ishi 80% — tozalash ("garbage in, garbage out" — toza kirish, to'g'ri chiqish; model iflosni tuzatolmas); tozalash poydevor (model ma'lumotga — baholanmaydi lekin markaziy). Tuzoqlar: auditsiz (ko'r-ko'rona), tartib xato (matn oldin), tasdiqsiz (tekshirmay), ko'r-ko'rona qaror (domen), hujjatsiz (takror yo'q), ma'lumot yo'qotish (to'ldir/clip),
copy()yo'q.
6-qism yakunlandi! Ma'lumotni tozalashni to'liq o'rgandik: yetishmayotgan qiymat 6.1-bob, dublikat 6.2-bob, outlier 6.3-bob, tur 6.4-bob, normalizatsiya 6.5-bob, standartlashtirish 6.6-bob, matn 6.7-bob, sana 6.8-bob, kategoriya kodlash 6.9-bob, noto'g'ri qiymat 6.10-bob, quvur 6.11-bob va loyiha 6.12-bob. Endi iflos ma'lumotni ishonchli ma'lumotga aylantirish qo'limizdan keladi.
Keyingi qismda (7-qism) ma'lumot yig'ish (data collection)ni o'rganamiz: ma'lumotni qayerdan olish — CSV/Excel/JSON fayllar, SQL bazalar, veb-skreyping (web scraping), API'lar; real dunyoda ma'lumot tayyor kelmaydi — uni yig'ish kerak.
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!