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

7.12-dars: Amaliyot (to'liq yig'ish loyihasi)

7-QISM — MA'LUMOT YIG'ISH · 12-dars (yakuniy)


1. Kirish va motivatsiya

7-qismda ma'lumot yig'ishni o'rgandik: manbalar 7.1-bob, fayllar (7.2-7.4), SQL (7.5-7.6), API (7.7-7.8), web scraping 7.9-bob, katta fayllar 7.10-bob, etika 7.11-bob. Endi hammasini bir loyihada birlashtiramiz: turli manbalardan (fayl CSV, API/JSON, mock scraping, SQL) ma'lumot yig'ib, birlashtirib, tozalab, saqlaymiz — to'liq ma'lumot yig'ish quvuri (etika bilan). Bu qism yakuni — yig'ish jarayonini boshdan oxir ko'rsatadi: manba tanlash → yig'ish → birlashtirish → saqlash. Bu Data Scientist ishining boshlanish nuqtasi — ma'lumotsiz tahlil yo'q. Nega muhim? (1) Sintez — barcha manba birga (loyiha); (2) Jarayon — manba → yig'ish → birlashtirish → saqlash; (3) Quvur — takrorlanuvchi yig'ish. Bu dars yig'ish loyihasini o'rgatadi — barcha bilim birga.

To'liq yig'ish loyihasi — barcha bilim birga: manba (fayl/API/SQL/scraping — 7.1-7.9), yig'ish (har manbadan — o'qish/so'rov/parse), birlashtirish (concat/merge — 3.9; turli manba bir jadval), tozalash (6-qism — audit; NaN/dublikat), saqlash (7.4 — Parquet/CSV; mazmunli nom), etika (7.11 — ruxsat, anonimlashtirish). Foydalanish: to'liq ma'lumot quvuri (manbadan saqlashgacha), takrorlanuvchi yig'ish. Bu 7.1-7.11 (butun 7-qism) sintezi. To'liq yig'ish loyihasi — barcha bilim birga. Manba. Yig'ish. Saqlash.

Real vaziyat. Data Scientist "uy narxlari" loyihasi uchun turli manbadan ma'lumot yig'adi: (1) fayl (davlat statistika CSV — 7.2; hudud narxlari), (2) API/JSON (valyuta kursi — 7.7; narxni dollarga), (3) mock scraping (e'lon sayti — 7.9; joriy narxlar; robots.txt tekshirilgan — 7.11), (4) SQL (agentlik bazasi — 7.6). Jarayon: har manbadan yig'ib (o'qish/so'rov/parse), birlashtir (merge — umumiy kalit hudud/sana), tozala (6-qism — audit), saqla (Parquet — uy_narx_2024-06.parquet). Data Scientist manbalarni yig'di, birlashtirdi, saqladi (etika bilan). To'liq yig'ish — barcha bilim birga.

Bu darsda yig'ish loyihasini bajaramiz.

Bu darsda:

  • Manbalardan yig'ish (fayl/API/scraping)
  • Birlashtirish (concat/merge)
  • Tozalash va saqlash
  • Yig'ish quvuri (funksiya)
  • Etika tekshiruvi
  • Loyiha amaliyoti
  • Loyiha tuzoqlari
  • Amaliy: to'liq loyiha

ℹ Misollar real pandas/json/bs4/sqlite3 bilan (Python 3.14; mock manbalar).


2. Nazariya — chuqur tushuntirish

2.1. Manbalardan yig'ish (fayl/API/scraping)

Har manbadan:

python
import pandas as pd, json

# FAYL (CSV — 7.2)
df_fayl = pd.read_csv("hudud.csv")

# API/JSON (mock — 7.7-7.8)
javob = json.loads(api_matn)
df_api = pd.json_normalize(javob)

# SCRAPING (mock HTML — 7.9)
# soup = BeautifulSoup(html); df_scrape = ...

# SQL (7.6)
df_sql = pd.read_sql("SELECT * FROM narx", conn)

Manbalardan yig'ish (fayl/API/scraping) — har manba: har manba o'z usuli bilan → DataFrame: fayl (pd.read_csv/read_excel — 7.2; CSV/Excel), API/JSON (requests/json.loads + json_normalize — 7.7-7.8), scraping (BeautifulSoup + find_all — 7.9), SQL (pd.read_sql — 7.6). Sabab: turli manba (7.1 — fayl/API/scraping/SQL; har biri o'z usuli); maqsad — har manbani DataFramega (birlashtirish uchun bir shakl). Fayl (read_csv), API (json), scraping (bs4), SQL (read_sql), DataFrame (bir shakl). Manbalardan yig'ish — har manba → DataFrame. Manba. Yig'ish.

2.2. Birlashtirish (concat/merge)

Bir jadvalga:

python
import pandas as pd

# CONCAT — ustma-ust (bir xil ustun; turli manba, bir shakl)
df = pd.concat([df1, df2, df3], ignore_index=True)

# MERGE — yonma-yon (umumiy kalit; boyitish — 3.9)
df = pd.merge(df_narx, df_valyuta, on="sana", how="left")

Birlashtirish (concat/merge) — bir jadvalga: pd.concat([df1, df2]) (ustma-ust — bir xil ustun; turli manba bir shakl; ignore_index=True), pd.merge(df1, df2, on="kalit", how=) (yonma-yon — umumiy kalit; boyitish; 3.9). Sabab: turli manba → bir jadval (tahlil uchun); concat (bir xil struktura — qatorlarni birlashtir; masalan turli hudud CSV), merge (turli ma'lumot — kalit bilan; masalan narx + valyuta sana bo'yicha). concat (ustma-ust — qator), merge (yonma-yon — kalit; 3.9), bir jadval (tahlil). Birlashtirish — concat/merge (bir jadval). concat. merge.

2.3. Tozalash va saqlash

Tozalash va saqlash — quvur davomi: tozalash (6-qism — birlashtirilgach: audit info/isna; NaN/dublikat/tur; turli manba — nomuvofiq (matn format, sana)), saqlash (7.4 — Parquet/CSV; mazmunli nom uy_narx_2024-06.parquet; data/xom/ asl, data/toza/ ishlangan). Sabab: yig'ilgan ≠ toza (turli manba — iflos; birlashtirilgach tozalash — 6-qism); saqlash (keyingi bosqich — tahlil/model; format/nom — 7.4). Tozalash (6-qism — audit), saqlash (Parquet/nom — 7.4), xom/toza (bosqich). Tozalash/saqlash — quvur (6-qism, 7.4). Tozalash. Saqlash.

2.4. Yig'ish quvuri (funksiya)

Yig'ish quvuri (funksiya) — takrorlanuvchi: def yig(): ... return df — barcha manba + birlashtirish + tozalash bir funksiya (6.11 quvur kabi); copy/return; har safar (yangi ma'lumot — yig()). Sabab: izchil/takrorlanuvchi (6.11 — bir funksiya; har safar bir xil; qo'lda emas); avtomatlashtirish (yangi ma'lumot — quvur qayta ishlaydi); xato boshqarish (manba ishlamasa — try/except; log). def yig (barcha manba + birlashtirish + tozalash), takror (yig()), xato (try/except). Yig'ish quvuri — funksiya (takrorlanuvchi). Quvur. Funksiya.

2.5. Etika tekshiruvi

Etika tekshiruvi — yig'ishdan oldin: ruxsat (shaxsiy ma'lumot — consent; scraping — robots.txt/Terms; 7.11), anonimlashtirish (PII — id/guruh; himoya), litsenziya (fayl/API/ma'lumot — foydalanish sharti), maqsad (kelishilgan — 7.11), hurmat (API rate limit, server — 7.7/7.9). Sabab: mas'uliyat (7.11 — yig'ish huquqiy/axloqiy; texnik emas); oldin tekshir (yig'ishdan oldin — ruxsat/etika; keyin kech). Ruxsat (consent/robots.txt), anonim (PII), litsenziya (foydalanish), maqsad (kelishilgan). Etika tekshiruvi — oldin (ruxsat/anonim; 7.11). Etika. Tekshiruv.

2.6. Loyiha amaliyoti

Loyiha amaliyoti: savol (nima ma'lumot — loyiha maqsadi; 7.1); manba (fayl/API/scraping/SQL — 7.1; mavjudlik/rasmiy); etika (ruxsat/robots.txt/litsenziya — 7.11; oldin); yig'ish (har manba → DataFrame — 7.2-7.9); birlashtirish (concat/merge — 3.9; bir jadval); tozalash (6-qism — audit; NaN/dublikat); saqlash (Parquet/nom — 7.4; xom/toza); quvur (funksiya — takror; 6.11). Tuzoqlar: etika yo'q (ruxsat/robots.txt), manba mos emas (format/kalit), birlashtirish xato (concat/merge — kalit), tozalash yo'q (iflos), saqlash (format/nom). Amaliyot — savol, manba, yig'ish, birlashtirish, saqlash. To'liq. Yig'ish.

2.7. Loyiha tuzoqlari

To'liq yig'ish loyiha asosiy tuzoqlari: etika o'tkazish (yig'ishdan oldin ruxsat/robots.txt/litsenziya 7.11-bob tekshirmas — qonunbuzarlik/axloqsiz; oldin tekshir); manba mos emas (turli manba — turli format/kalit (fayl hudud, API region — birlashtirib bo'lmas); moslash (ustun nomi, format — birlashtirishdan oldin)); birlashtirish xato (concat (bir xil ustun kerak; turli — NaN) vs merge (kalit — 3.9; noto'g'ri kalit — ko'p/kam qator); to'g'ri usul/kalit); tozalash yo'q (yig'ilgan iflos (turli manba — nomuvofiq); birlashtirilgach tozalash (6-qism — audit)); saqlash format (katta — Parquet; nom — mazmunli; xom saqla — 7.4); manba ishonchi (manba — ishonchlimi? sana? 7.1-bob; turli manba — nomuvofiq/xato); kodlash/format (fayl kodlash 7.2, API JSON 7.8 — har manba o'z tuzog'i); xato boshqarish (manba ishlamasa (API 500, fayl yo'q) — quvur to'xtash; try/except, log); takrorlanuvchanlik (quvur — funksiya 6.11-bob; qo'lda — noizchil); manba versiya (API/sayt o'zgarsa — yig'ish buziladi; barqaror manba/tekshir). Sabab: loyiha manba/birlashtirish/etika nozik (etika, format, kalit — qonun yoki xato). Yechim: etika oldin, manba moslash, to'g'ri birlashtirish, tozalash, quvur. Tuzoqlar — etika, manba mos, birlashtirish, tozalash.

2.8. To'liq yig'ish — barcha bilim birga

To'liq yig'ish loyiha asosiy g'oyasi — barcha bilim birga: 7-qism (7.1-7.11 — manbalar, fayllar, SQL, API, scraping, katta fayllar, etika) bir loyihada (turli manba → to'liq ma'lumot). Jarayon: savol (nima ma'lumot — 7.1) → manba (fayl/API/scraping/SQL — mavjudlik/rasmiy) → etika (ruxsat/robots.txt/litsenziya — 7.11; oldin) → yig'ish (har manba → DataFrame — 7.2-7.9) → birlashtirish (concat ustma-ust/merge kalit — 3.9; bir jadval) → tozalash (6-qism — audit; NaN/dublikat) → saqlash (Parquet/nom — 7.4; xom/toza) → quvur (funksiya — takror; 6.11). Foydalanish: to'liq ma'lumot quvuri (manbadan saqlashgacha; tahlil/model uchun asos), takrorlanuvchi yig'ish (yangi ma'lumot — quvur). Tuzoqlar: etika o'tkazish (ruxsat/robots.txt — 7.11), manba mos emas (format/kalit — moslash), birlashtirish xato (concat/merge — kalit), tozalash yo'q (iflos — 6-qism), saqlash (format/nom — 7.4), xato boshqarish (manba ishlamasa). Bu 7.1-7.11 (butun 7-qism) sintezi va 3.9 (merge), 6-qism (tozalash), 6.11 (quvur) bilan. To'liq yig'ish — barcha bilim birga (manba → birlashtirish → tozalash → saqlash; etika bilan). Manba. Yig'ish. Saqlash.


3. Tez ma'lumotnoma

python
import pandas as pd, json, sqlite3

# 1. ETIKA (yig'ishdan OLDIN — 7.11):
#    ruxsat? robots.txt? litsenziya? maqsad? anonimlashtirish?

# 2. YIG'ISH (har manba → DataFrame):
df_fayl = pd.read_csv("hudud.csv")                    # 7.2
df_api = pd.json_normalize(json.loads(api_matn))      # 7.7-7.8
df_sql = pd.read_sql("SELECT * FROM narx", conn)      # 7.6
# scraping: BeautifulSoup + find_all (7.9)

# 3. BIRLASHTIRISH 3.9-bob:
df = pd.concat([df1, df2], ignore_index=True)         # ustma-ust
df = pd.merge(df_narx, df_valyuta, on="sana", how="left")  # kalit

# 4. TOZALASH (6-qism):
df = df.drop_duplicates()
df["yosh"] = df["yosh"].fillna(df["yosh"].median())

# 5. SAQLASH 7.4-bob:
df.to_parquet("data/toza/uy_narx_2024-06.parquet")    # mazmunli nom

# 6. QUVUR (funksiya — takror; 6.11):
def yig():
    ...
    return df

QOIDA: etika oldin · manba moslash · to'g'ri birlashtirish · tozalash · quvur

To'liq yig'ish xulosasi

To'liq yig'ish — barcha bilim birga (manba → birlashtirish → saqlash)
Yig'ish — har manba → DataFrame (fayl/API/scraping/SQL)
Birlashtirish — concat (ustma-ust) / merge (kalit — 3.9)
Tozalash + saqlash — 6-qism (audit) + 7.4 (Parquet/nom)
Etika — yig'ishdan oldin (ruxsat, anonimlashtirish; 7.11)

4. Batafsil misollar

Misollar real pandas/json/bs4/sqlite3 bilan (Python 3.14; mock manbalar).

Misol 1 — Manbalardan yig'ish

python
"""Manbalardan yig'ish (real pandas/json/bs4)."""

import json
import pandas as pd
from bs4 import BeautifulSoup


def main() -> None:
    print("=== 1. Fayl (CSV — mock) ===")
    csv_matn = "hudud,narx\nToshkent,120\nSamarqand,80\n"
    from io import StringIO
    df_fayl = pd.read_csv(StringIO(csv_matn))
    print(f"  fayl: {len(df_fayl)} qator")

    print("\n=== 2. API/JSON (mock) ===")
    api = '[{"hudud": "Buxoro", "narx": 70}]'
    df_api = pd.json_normalize(json.loads(api))
    print(f"  API: {df_api['hudud'].tolist()}")

    print("\n=== 3. Scraping (mock HTML) ===")
    html = '<div class="narx" data-hudud="Xiva">95</div>'
    soup = BeautifulSoup(html, "html.parser")
    teg = soup.find("div", class_="narx")
    df_scrape = pd.DataFrame([{"hudud": teg["data-hudud"], "narx": int(teg.text)}])
    print(f"  scrape: {df_scrape['hudud'].tolist()}")

    print("\n=== 4. Har manba → DataFrame ===")
    print("  fayl, API, scraping — bir shakl (birlashtirish uchun)")
    print("  ⭐ Manbalardan yig'ish")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. Fayl (CSV — mock) ===
  fayl: 2 qator

=== 2. API/JSON (mock) ===
  API: ['Buxoro']

=== 3. Scraping (mock HTML) ===
  scrape: ['Xiva']

=== 4. Har manba → DataFrame ===
  fayl, API, scraping — bir shakl (birlashtirish uchun)
  ⭐ Manbalardan yig'ish

Nima ko'rsatdi: 2.1-bo'lim.

Misol 2 — Birlashtirish

python
"""Birlashtirish (real pandas)."""

import pandas as pd


def main() -> None:
    df1 = pd.DataFrame({"hudud": ["Toshkent", "Samarqand"], "narx": [120, 80]})
    df2 = pd.DataFrame({"hudud": ["Buxoro", "Xiva"], "narx": [70, 95]})
    valyuta = pd.DataFrame({"hudud": ["Toshkent", "Samarqand", "Buxoro", "Xiva"],
                            "kurs": [12650] * 4})

    print("=== 1. concat (ustma-ust) ===")
    df = pd.concat([df1, df2], ignore_index=True)
    print(f"  qatorlar: {len(df)} (2 manba birlashdi)")

    print("\n=== 2. merge (kalit — hudud) ===")
    boyitilgan = pd.merge(df, valyuta, on="hudud", how="left")
    print(f"  ustunlar: {list(boyitilgan.columns)}")

    print("\n=== 3. Narx dollarda ===")
    boyitilgan["narx_usd"] = (boyitilgan["narx"] * 1000 / boyitilgan["kurs"]).round(1)
    print(f"  USD: {boyitilgan['narx_usd'].tolist()}")

    print("\n=== 4. Bir jadval ===")
    print("  concat (qatorlar) + merge (boyitish)")
    print("  ⭐ Birlashtirish — concat/merge")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. concat (ustma-ust) ===
  qatorlar: 4 (2 manba birlashdi)

=== 2. merge (kalit — hudud) ===
  ustunlar: ['hudud', 'narx', 'kurs']

=== 3. Narx dollarda ===
  USD: [9.5, 6.3, 5.5, 7.5]

=== 4. Bir jadval ===
  concat (qatorlar) + merge (boyitish)
  ⭐ Birlashtirish — concat/merge

Nima ko'rsatdi: 2.2-bo'lim.

Misol 3 — To'liq quvur (funksiya)

python
"""To'liq yig'ish quvuri (real pandas/json)."""

import json
import numpy as np
import pandas as pd
from io import StringIO


def yig():
    """To'liq yig'ish quvuri (manba → birlashtir → tozala)."""
    # 1. Yig'ish (mock manbalar)
    df_fayl = pd.read_csv(StringIO("hudud,narx\nToshkent,120\nSamarqand,80\nToshkent,120\n"))
    df_api = pd.json_normalize(json.loads('[{"hudud": "Buxoro", "narx": 70}]'))
    # 2. Birlashtirish
    df = pd.concat([df_fayl, df_api], ignore_index=True)
    # 3. Tozalash (6-qism)
    df["hudud"] = df["hudud"].str.strip().str.lower()
    df = df.drop_duplicates().reset_index(drop=True)
    return df


def main() -> None:
    print("=== 1. Quvur ishga tushirish ===")
    df = yig()
    print(f"  natija: {len(df)} qator")

    print("\n=== 2. Birlashgan manbalar ===")
    print(f"  hududlar: {df['hudud'].tolist()}")

    print("\n=== 3. Dublikat o'chdi (tozalash) ===")
    print("  Toshkent 2 marta → 1 (drop_duplicates)")

    print("\n=== 4. Takrorlanuvchi ===")
    print("  yig() — har safar bir xil (quvur; 6.11)")
    print("  ⭐ To'liq quvur (yig'→birlashtir→tozala)")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. Quvur ishga tushirish ===
  natija: 3 qator

=== 2. Birlashgan manbalar ===
  hududlar: ['toshkent', 'samarqand', 'buxoro']

=== 3. Dublikat o'chdi (tozalash) ===
  Toshkent 2 marta → 1 (drop_duplicates)

=== 4. Takrorlanuvchi ===
  yig() — har safar bir xil (quvur; 6.11)
  ⭐ To'liq quvur (yig'→birlashtir→tozala)

Nima ko'rsatdi: 2.4-bo'lim.

Misol 4 — Etika tekshiruvi va saqlash

python
"""Etika tekshiruvi va saqlash (real pandas/tempfile)."""

import tempfile
from pathlib import Path
import pandas as pd


def etika_ok(ruxsat, robots_ruxsat, anonimlangan):
    """Yig'ish etik/qonuniy mi 7.11-bob."""
    return ruxsat and robots_ruxsat and anonimlangan


def main() -> None:
    print("=== 1. Etika tekshiruvi 7.11-bob ===")
    ok = etika_ok(ruxsat=True, robots_ruxsat=True, anonimlangan=True)
    print(f"  yig'ish mumkin: {ok}")

    print("\n=== 2. Ma'lumot (anonimlangan) ===")
    df = pd.DataFrame({
        "id": ["user_001", "user_002"],   # ism o'rniga (7.11)
        "hudud": ["toshkent", "samarqand"],
        "narx": [120, 80],
    })
    print(f"  PII yo'q (id): {df['id'].tolist()}")

    print("\n=== 3. Saqlash (mazmunli nom — 7.4) ===")
    yol = Path(tempfile.gettempdir()) / "uy_narx_toza_2024-06.csv"
    df.to_csv(yol, index=False)
    print(f"  saqlandi: {yol.name}")

    print("\n=== 4. Qayta o'qish (tekshir) ===")
    qayta = pd.read_csv(yol)
    print(f"  qatorlar: {len(qayta)}")
    yol.unlink()
    print("  ⭐ Etika + saqlash (mas'uliyatli)")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. Etika tekshiruvi 7.11-bob ===
  yig'ish mumkin: True

=== 2. Ma'lumot (anonimlangan) ===
  PII yo'q (id): ['user_001', 'user_002']

=== 3. Saqlash (mazmunli nom — 7.4) ===
  saqlandi: uy_narx_toza_2024-06.csv

=== 4. Qayta o'qish (tekshir) ===
  qatorlar: 2
  ⭐ Etika + saqlash (mas'uliyatli)

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


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

Noto'g'ri fikr To'g'risi
"to'g'ridan yig'ish" Etika oldin (ruxsat)
"har manba mos" Moslash (format/kalit)
"concat = merge" Ustma-ust vs kalit
"yig'sam toza" Tozalash (6-qism)
"istagan format" Parquet/nom (7.4)
"qo'lda yig'ish" Quvur (takror)
"manba ishonchli" Tekshir (sana, manba)
"xato bo'lsa to'xtaydi" Xato boshqarish (try)

6. Keng tarqalgan xatolar va yechimlari

1. Etika o'tkazish

python
# darhol yig'ish (ruxsat/robots.txt tekshirmay)                   # ⚠️
# etika oldin (ruxsat, litsenziya — 7.11)                         # ✅

2. Manba mos emas

python
pd.concat([df_hudud, df_region])   # ustun nomi turli             # ⚠️
df_api.rename(columns={"region": "hudud"})   # moslash           # ✅

3. Birlashtirish (concat/merge)

python
pd.concat([narx, valyuta])   # kalit kerak (merge)                # ⚠️
pd.merge(narx, valyuta, on="sana")   # kalit                     # ✅

4. Tozalash yo'q

python
df = pd.concat([...])   # iflos (turli manba)                     # ⚠️
df = tozala(pd.concat([...]))   # tozalash (6-qism)              # ✅

5. Saqlash format

python
katta_df.to_csv("data.csv")   # katta (sekin)                     # ⚠️
katta_df.to_parquet("data/toza/uy_narx_2024-06.parquet")        # ✅

6. Xato boshqarish

python
df_api = requests.get(url).json()   # API xato → quvur to'xtaydi  # ⚠️
try: df_api = ...  except: df_api = pd.DataFrame()   # boshqar    # ✅

7. Qo'lda yig'ish

python
# har safar qo'lda (noizchil)                                     # ⚠️
def yig(): ...   # quvur (takror — 6.11)                          # ✅

7. Integratsiya — bu bilim qayerda kerak bo'ladi

  • 7.1-7.11 (o'tilgan): Barcha yig'ish
  • 3.9-dars (o'tilgan): Merge (birlashtirish)
  • 6-qism (o'tilgan): Tozalash
  • 6.11-dars (o'tilgan): Quvur (takror)
  • 5-qism (o'tilgan): Vizualizatsiya (yig'ilgach)

8. Eng yaxshi amaliyotlar

  1. Etika oldin — ruxsat/robots.txt 7.11-bob.

  2. Manba moslash — format/kalit.

  3. Birlashtirish — concat/merge 3.9-bob.

  4. Tozalash — 6-qism (audit).

  5. Saqlash — Parquet/nom 7.4-bob.

  6. Quvur — funksiya (takror).

  7. Xato boshqarish — try/except.

  8. Manba ishonchi — tekshir (sana).


9. Amaliy topshiriq

Vazifa 1: Bashorat qiling

python
1.  # yig'ish loyihasi nima?
2.  # manbalardan yig'ish?
3.  # DataFrame nega?
4.  # concat nima?
5.  # merge nima?
6.  # tozalash qachon?
7.  # saqlash format?
8.  # quvur nima?
9.  # etika qachon?
10. # xato boshqarish?
11. # manba moslash?
12. # nega barcha birga?
Javoblar
  1. Turli manbadan yig'ish (sintez)
  2. Har manba → DataFrame
  3. Bir shakl (birlashtirish)
  4. Ustma-ust (bir xil ustun)
  5. Kalit (boyitish — 3.9)
  6. Birlashtirilgach (6-qism)
  7. Parquet/nom (7.4)
  8. Funksiya (takror)
  9. Yig'ishdan oldin (7.11)
  10. try/except (manba xato)
  11. Format/kalit (birlashtirish)
  12. Loyiha (sintez)

Vazifa 2: Xatolarni tuzating

python
1.  # darhol yig'ish (etika yo'q)

2.  pd.concat([df_hudud, df_region])

3.  pd.concat([narx, valyuta])

4.  df = pd.concat([...])   # iflos

5.  df_api = requests.get(url).json()
Javoblar
python
1.  etika oldin (7.11)

2.  rename (moslash)

3.  merge(on="sana")

4.  tozala(...) (6-qism)

5.  try/except (boshqar)

Vazifa 3: Yig'ish

Modellang:

  1. Fayl
  2. API/JSON
  3. Scraping
  4. SQL

Vazifa 4: Birlashtirish

Modellang:

  1. concat
  2. merge
  3. Kalit
  4. Moslash

Vazifa 5: Quvur va etika

Modellang:

  1. Funksiya
  2. Takror
  3. Etika oldin
  4. Saqlash

Vazifa 6: Integratsiya

Modellang:

  1. Barcha (7.1-7.11)
  2. Merge (3.9)
  3. Tozalash (6)
  4. Vizualizatsiya (5)

Vazifa 7: O'ylash

Ma'lumot yig'ish (7-qism) Data Scientist ishining boshlanish nuqtasi — undan keyin tozalash (6-qism), tahlil (4-qism), vizualizatsiya (5-qism), model (20-qism) keladi. Yig'ilgan ma'lumot sifati keyingi barcha bosqichni belgilaydi ("garbage in, garbage out"). Nima uchun ma'lumot yig'ish "eng past baholanadigan, lekin eng ta'sirli" bosqich, va nima uchun manba tanlash (ishonchli, vakilli, etik) modeldan ko'ra muhimroq bo'lishi mumkin?

Javob

Qisqa javob: Yig'ish — boshlanish nuqtasi (keyin tozalash/tahlil/model); yig'ilgan ma'lumot sifati keyingi hammasini belgilaydi ("garbage in, garbage out"); yig'ish "eng past baholanadigan, lekin eng ta'sirli"; manba tanlash (ishonchli, vakilli, etik) modeldan muhimroq bo'lishi mumkin, chunki: (1) poydevor — yig'ish birinchi (ma'lumot — keyingi hammasiga asos; iflos/noto'g'ri manba — butun tahlil/model noto'g'ri); "garbage in, garbage out" (manbadan boshlanadi); (2) manba sifati — ishonchli (noto'g'ri manba — xato ma'lumot; model xato o'rganadi), vakilli (4.8 — egilgan manba — noxolis model; adolat), etik (7.11 — ruxsatsiz — qonun/zarar); (3) tuzatib bo'lmas — noto'g'ri yig'ilgan ma'lumot — keyin tozalash tuzatolmaydi (yo'q ma'lumot — yo'q; egilgan manba — egilgan; model tuzatolmas); (4) ta'sir — manba qaror butun loyihaga (ishonchsiz manba — butun natija shubhali). "Nega past baholanadi": (a) zerikarli (yig'ish — mashaqqatli, texnik; model — "aqlli", qiziq); (b) ko'rinmas (yig'ish — fonda; model — yulduz); (c) o'rgatilmaydi (kurslar — model; yig'ish kam; real ish — teskari); (d) nomahsul ko'rinadi (yangi narsa emas). "Nega eng ta'sirli": (1) poydevor (ma'lumot — keyingi hammasiga; iflos — butun buziladi); (2) tuzatib bo'lmas (noto'g'ri manba — tozalash yetmaydi); (3) manba qaror (ishonchli/vakilli/etik — butun loyiha); (4) ROI (yaxshi ma'lumot + oddiy model > iflos ma'lumot + murakkab model). "Nega manba > model": (a) manba poydevor (model — ma'lumotga quriladi; iflos — foydasiz); (b) vakillik (egilgan manba — noxolis model; adolat — 4.8); (c) ishonch (ishonchli manba — ishonchli natija); (d) etika (etik manba — qonun/zarar yo'q; 7.11). "Amaliy": manba tanlash (ishonchli, vakilli, etik — birinchi); yig'ish jiddiy (mashaqqatli — asos); quvur (izchil); etika 7.11-bob. Saboqlar: yig'ish poydevor (keyingi hammasiga); manba sifati (ishonchli/vakilli/etik — butun); past baholanadi (zerikarli) lekin eng ta'sirli; manba > model (poydevor). To'g'ri: yig'ish — poydevor (garbage in, garbage out); manba tanlash (ishonchli/vakilli/etik — butun loyiha); jiddiy yondashuv. Muvozanat: model (natija — muhim) + yig'ish/manba (asos — muhimroq; ta'sirli). Bu Data Science mohiyat asosiy (yig'ish poydevor; manba sifati; garbage in, garbage out; manba > model). To'liq yig'ish — barcha bilim birga (poydevor; manba tanlash — eng ta'sirli).

1. Nega yig'ish eng ta'sirli

  • Poydevor (keyingi hammasiga asos)
  • Tuzatib bo'lmas (noto'g'ri manba — tozalash yetmaydi)
  • Manba qaror (butun loyiha)
  • Garbage in, garbage out

2. Nega past baholanadi

  • Zerikarli (mashaqqatli — model qiziq)
  • Ko'rinmas (fonda — model yulduz)
  • O'rgatilmaydi (kurslar — model)
  • Nomahsul ko'rinadi (yangi narsa emas)

3. Manba vs model

Manba (yig'ish) Model
Poydevor (asos) Ma'lumotga quriladi
Ishonchli/vakilli/etik Iflos — foydasiz
Butun loyiha Bir bosqich

4. Amaliy

  1. Manba tanlash (ishonchli/vakilli/etik)
  2. Yig'ish jiddiy (mashaqqatli — asos)
  3. Quvur (izchil — takror)
  4. Etika (7.11 — ruxsat)

5. Xulosa

  1. Yig'ish poydevor (keyingi hammasiga — garbage in, garbage out)
  2. Manba sifati (ishonchli/vakilli/etik — butun natija)
  3. Past baholanadi (zerikarli) lekin eng ta'sirli
  4. Manba > model (poydevor — model ma'lumotga quriladi)

Nimani mustahkamlaydi: 2.6, 2.8-bo'limlar.


Xulosa

Bu darsda yig'ish loyihasini bajardik va 7-qismni yakunladik.

Eng muhim uch fikr:

  1. Yig'ish va birlashtirish. Manbalardan yig'ish — har manba o'z usuli bilan → DataFrame: fayl (read_csv — 7.2), API/JSON (json_normalize — 7.7-7.8), scraping (BeautifulSoup — 7.9), SQL (read_sql — 7.6). Birlashtirish — pd.concat (ustma-ust — bir xil ustun) yoki pd.merge (yonma-yon — umumiy kalit; 3.9).

  2. Tozalash, saqlash, quvur. Tozalash (6-qism — birlashtirilgach audit; NaN/dublikat/tur — turli manba nomuvofiq). Saqlash (7.4 — Parquet/CSV; mazmunli nom uy_narx_2024-06.parquet; xom/toza). Quvur (funksiya — def yig(): ... return df; takrorlanuvchi — 6.11; xato boshqarish try/except). Etika (yig'ishdan oldin — ruxsat/robots.txt/litsenziya/anonimlashtirish; 7.11).

  3. Barcha bilim birga. To'liq yig'ish — butun 7-qism sintezi (7.1-7.11; turli manba → to'liq ma'lumot). Yig'ish — Data Scientist ishi boshlanish nuqtasi ("garbage in, garbage out" — manba sifati butun loyihani belgilaydi); eng past baholanadigan, lekin eng ta'sirli; manba tanlash (ishonchli, vakilli, etik) modeldan muhimroq (poydevor). Tuzoqlar: etika o'tkazish 7.11-bob, manba mos emas (moslash — format/kalit), birlashtirish xato (concat/merge), tozalash yo'q (6-qism), saqlash (format/nom — 7.4), xato boshqarish (try), qo'lda yig'ish (quvur).

7-qism yakunlandi! Ma'lumot yig'ishni to'liq o'rgandik: manbalar 7.1-bob, fayllar CSV/Excel/JSON/Parquet (7.2-7.4), SQL/SQLite (7.5-7.6), API/JSON parse (7.7-7.8), web scraping 7.9-bob, katta fayllar 7.10-bob, etika 7.11-bob va loyiha 7.12-bob. Endi turli manbadan ma'lumot yig'ish qo'limizdan keladi (etika bilan).

Data Science asoslari (1-7 qism) yakunlandi! Kirish, NumPy, Pandas, Statistika, Vizualizatsiya, Tozalash, Yig'ish — Data Scientist poydevori. Keyingi qismlarda (reja bo'yicha) mashinaviy o'qitish (ML), chuqur o'qitish (DL) va ilg'or mavzular davom etadi.

Ulashish:Telegram'da

Izohlar (0)

Izoh yozish uchun kiring.

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