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

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:

python
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:

python
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

python
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 · hujjatla

To'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 → hisobot

4. Batafsil misollar

Misollar real pandas/numpy bilan (Python 3.14) ishlaydi.

Misol 1 — Audit (muammolarni topish)

python
"""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:

text
=== 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'yxati

Nima ko'rsatdi: 2.1-bo'lim.

Misol 2 — To'liq tozalash quvuri

python
"""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:

text
=== 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 qadam

Nima ko'rsatdi: 2.2-bo'lim.

Misol 3 — Tasdiqlash (verify)

python
"""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:

text
=== 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

python
"""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:

text
=== 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

python
tozala(df)   # muammoni bilmay (ko'r-ko'rona)                     # ⚠️
df.info(); df.isna().sum()   # audit birinchi                    # ✅

2. Tartib xato

python
df.drop_duplicates(); df["x"].str.lower()   # dublikat oldin      # ⚠️
df["x"] = df["x"].str.lower(); df.drop_duplicates()   # matn oldin # ✅

3. Tasdiqsiz

python
toza = tozala(df)   # toza deb faraz (tekshirmay)                 # ⚠️
assert toza.isna().sum().sum() == 0   # tasdiqla                 # ✅

4. Ko'r-ko'rona qaror

python
df["yosh"].fillna(0)   # 0 (domen/audit asosida emas)            # ⚠️
df["yosh"].fillna(df["yosh"].median())   # median (chidamli)     # ✅

5. Ma'lumot yo'qotish

python
df.dropna()   # ko'p o'chir (1000 → 200)                          # ⚠️
df.fillna(...)   # to'ldir (saqlaydi)                            # ✅

6. Hujjatsiz

python
def tozala(df): ...   # nima qilindi? (izoh yo'q)                 # ⚠️
def tozala(df): """Qadamlar: matn, tur, NaN."""                  # ✅

7. Asl yo'qotish

python
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

  1. Audit birinchi (muammoni bil).

  2. Tartib — bog'liqlik (matn oldin).

  3. Tasdiqla — verify (assert).

  4. Jarayon — audit → tozalash → tasdiq.

  5. Domen qaror — median, o'chir (audit).

  6. To'ldir/clip — ma'lumot saqla.

  7. Hujjatla — hisobot (takror).

  8. copy() — asl saqla.


9. Amaliy topshiriq

Vazifa 1: Bashorat qiling

python
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
  1. Barcha bilim birga (audit→tozalash→tasdiq)
  2. Ma'lumotni tekshirish (muammo)
  3. info/describe/isna/duplicated/unique
  4. Barcha qadam izchil (funksiya)
  5. Bog'liqlik (matn oldin)
  6. Natija toza (verify)
  7. audit → tozalash → tasdiq
  8. Takrorlanuvchanlik (hujjat)
  9. Auditsiz (muammoni bilmay)
  10. Ko'p o'chir (to'ldir/clip)
  11. Iflos ma'lumot (asos)
  12. Sintez (loyiha)

Vazifa 2: Xatolarni tuzating

python
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 → 200
Javoblar
python
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:

  1. info
  2. describe
  3. isna
  4. Muammo ro'yxati

Vazifa 4: Tozalash

Modellang:

  1. Funksiya
  2. Tartib
  3. Barcha qadam
  4. copy

Vazifa 5: Tasdiq va jarayon

Modellang:

  1. isna=0
  2. Qoidalar
  3. audit→tozalash→tasdiq
  4. Iteratsiya

Vazifa 6: Integratsiya

Modellang:

  1. Barcha (6.1-6.11)
  2. Pandas (3)
  3. Vizualizatsiya (5)
  4. 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

  1. Jiddiy (80% — model kabi muhim)
  2. Jarayon (audit→tozalash→tasdiq)
  3. Quvur (izchil, takror)
  4. Domen (soha — qaror; hujjat)

5. Xulosa

  1. Tozalash poydevor (model ma'lumotga — iflos foydasiz)
  2. Garbage in, garbage out (model iflosni tuzatolmas)
  3. 80% ish (asos — muhimroq bo'lishi mumkin)
  4. 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:

  1. 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.

  2. 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).

  3. 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.

Ulashish:Telegram'da

Izohlar (0)

Izoh yozish uchun kiring.

  • Hozircha izoh yo'q. Birinchi bo'ling!
6.12-dars: Amaliyot (to'liq tozalash loyihasi) — IlmHamroh