Mundarija (22)
- 1. Kirish va motivatsiya
- 2. Nazariya — chuqur tushuntirish
- 2.1. Manbalardan yig'ish (fayl/API/scraping)
- 2.2. Birlashtirish (concat/merge)
- 2.3. Tozalash va saqlash
- 2.4. Yig'ish quvuri (funksiya)
- 2.5. Etika tekshiruvi
- 2.6. Loyiha amaliyoti
- 2.7. Loyiha tuzoqlari
- 2.8. To'liq yig'ish — barcha bilim birga
- 3. Tez ma'lumotnoma
- 4. Batafsil misollar
- Misol 1 — Manbalardan yig'ish
- Misol 2 — Birlashtirish
- Misol 3 — To'liq quvur (funksiya)
- Misol 4 — Etika tekshiruvi va saqlash
- 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
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:
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:
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
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 · quvurTo'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
"""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:
=== 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'ishNima ko'rsatdi: 2.1-bo'lim.
Misol 2 — Birlashtirish
"""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:
=== 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/mergeNima ko'rsatdi: 2.2-bo'lim.
Misol 3 — To'liq quvur (funksiya)
"""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:
=== 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
"""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:
=== 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
# darhol yig'ish (ruxsat/robots.txt tekshirmay) # ⚠️
# etika oldin (ruxsat, litsenziya — 7.11) # ✅2. Manba mos emas
pd.concat([df_hudud, df_region]) # ustun nomi turli # ⚠️
df_api.rename(columns={"region": "hudud"}) # moslash # ✅3. Birlashtirish (concat/merge)
pd.concat([narx, valyuta]) # kalit kerak (merge) # ⚠️
pd.merge(narx, valyuta, on="sana") # kalit # ✅4. Tozalash yo'q
df = pd.concat([...]) # iflos (turli manba) # ⚠️
df = tozala(pd.concat([...])) # tozalash (6-qism) # ✅5. Saqlash format
katta_df.to_csv("data.csv") # katta (sekin) # ⚠️
katta_df.to_parquet("data/toza/uy_narx_2024-06.parquet") # ✅6. Xato boshqarish
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
# 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
Etika oldin — ruxsat/robots.txt 7.11-bob.
Manba moslash — format/kalit.
Birlashtirish — concat/merge 3.9-bob.
Tozalash — 6-qism (audit).
Saqlash — Parquet/nom 7.4-bob.
Quvur — funksiya (takror).
Xato boshqarish — try/except.
Manba ishonchi — tekshir (sana).
9. Amaliy topshiriq
Vazifa 1: Bashorat qiling
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
- Turli manbadan yig'ish (sintez)
- Har manba → DataFrame
- Bir shakl (birlashtirish)
- Ustma-ust (bir xil ustun)
- Kalit (boyitish — 3.9)
- Birlashtirilgach (6-qism)
- Parquet/nom (7.4)
- Funksiya (takror)
- Yig'ishdan oldin (7.11)
- try/except (manba xato)
- Format/kalit (birlashtirish)
- Loyiha (sintez)
Vazifa 2: Xatolarni tuzating
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
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:
- Fayl
- API/JSON
- Scraping
- SQL
Vazifa 4: Birlashtirish
Modellang:
- concat
- merge
- Kalit
- Moslash
Vazifa 5: Quvur va etika
Modellang:
- Funksiya
- Takror
- Etika oldin
- Saqlash
Vazifa 6: Integratsiya
Modellang:
- Barcha (7.1-7.11)
- Merge (3.9)
- Tozalash (6)
- 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
- Manba tanlash (ishonchli/vakilli/etik)
- Yig'ish jiddiy (mashaqqatli — asos)
- Quvur (izchil — takror)
- Etika (7.11 — ruxsat)
5. Xulosa
- Yig'ish poydevor (keyingi hammasiga — garbage in, garbage out)
- Manba sifati (ishonchli/vakilli/etik — butun natija)
- Past baholanadi (zerikarli) lekin eng ta'sirli
- 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:
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) yokipd.merge(yonma-yon — umumiy kalit; 3.9).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).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.
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!