Mundarija (22)
- 1. Kirish va motivatsiya
- 2. Nazariya — chuqur tushuntirish
- 2.1. Ma'lumotni yuklash va ko'rish
- 2.2. Tozalash va savol berish
- 2.3. Guruhlash va tahlil
- 2.4. Xulosa chiqarish
- 2.5. To'liq tsikl (mini loyiha)
- 2.6. Tahlil amaliyoti
- 2.7. Tahlil tuzoqlari
- 2.8. Birinchi tahlil — savolga javob berish san'ati
- 3. Tez ma'lumotnoma
- 4. Batafsil misollar
- Misol 1 — Yuklash va ko'rish
- Misol 2 — Tozalash
- Misol 3 — Guruhlash va saralash (savolga javob)
- Misol 4 — To'liq tsikl (mini loyiha)
- 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
1.6-dars: Birinchi tahlil (mini loyiha)
1-QISM — KIRISH: DATA SCIENCE · 6-dars
1. Kirish va motivatsiya
Nazariyani bildik — endi birinchi haqiqiy tahlilni qilamiz. Bu dars kichik ma'lumot to'plamini olib, uni uchdan oxirigacha tahlil qiladi: yuklash, ko'rish, tozalash, savol berish, javob topish. Bu — CRISP-DM 1.4-bob ni amaliyotda ko'rish. Hech qanday murakkab model yo'q — faqat pandas bilan ma'lumotni tushunish va undan oddiy xulosa chiqarish. Aynan shu — Data Scientist'ning kundalik ishining yuragi: ma'lumotga savol berib, javobni topish. Bu kichik loyiha butun jarayonni "kichraytirilgan" holda ko'rsatadi — keyingi qismlarda har bosqichni chuqurlashtiramiz, lekin bugun to'liq tsiklni bir marta ko'rasiz. Birinchi tahlil — nazariyadan amaliyotga o'tish.
Birinchi tahlil — kichik ma'lumotni uchdan oxirigacha tahlil qilish (mini CRISP-DM): yuklash (pandas — DataFrame), ko'rish (head, info, describe — ma'lumotni tanish), tozalash (yetishmayotgan, xato), savol (nima bilmoqchimiz), tahlil (guruhlash, filtrlash, statistika), xulosa (javob). Foydalanish: har Data Science loyihasi, ma'lumotni tushunish. Bu 1.4 (CRISP-DM), 4-qism (Pandas) ni amaliyotda birlashtiradi. Bu 1.4, 9-qism (EDA) bilan bog'liq. Birinchi tahlil — yukla, ko'r, tozala, savol, javob. Mini tsikl. Amaliyot.
Real vaziyat. Do'kon egasi: "Qaysi mahsulot eng ko'p daromad keltiradi? Qaysi shaharda yaxshi sotiladi?". Data Scientist savdo ma'lumotini oldi (pandas — DataFrame), ko'rdi (head — dastlabki qatorlar, describe — statistika), tozaladi (bo'sh narxlar), guruhladi (mahsulot bo'yicha daromad — groupby), saraladi (eng yuqori). Javob: "A mahsuloti eng ko'p daromad, Toshkentda yaxshi sotiladi". Do'kon egasi shu asosda qaror qildi (A ni ko'proq buyurtma). Model kerak bo'lmadi — oddiy tahlil yetdi. Birinchi tahlil — savolga javob.
Bu darsda birinchi tahlilni qilamiz.
Bu darsda:
- Ma'lumotni yuklash va ko'rish
- Tozalash va savol berish
- Guruhlash va tahlil
- Xulosa chiqarish
- To'liq tsikl (mini loyiha)
- Tahlil amaliyoti
- Tahlil tuzoqlari
- Amaliy: birinchi tahlil modeli
ℹ Misollar real pandas bilan (deterministik ma'lumot) to'liq tahlilni ko'rsatadi.
2. Nazariya — chuqur tushuntirish
2.1. Ma'lumotni yuklash va ko'rish
Avval ma'lumotni tanish:
import pandas as pd
df = pd.read_csv("savdo.csv") # yuklash (yoki DataFrame)
df.head() # dastlabki 5 qator (ko'rinish)
df.info() # ustunlar, turlar, yetishmayotgan
df.describe() # raqamli statistika (o'rtacha, min, max)
df.shape # (qatorlar, ustunlar) Ma'lumotni yuklash va ko'rish — tahlilning birinchi qadami: yuklash (pd.read_csv — CSV → DataFrame, yoki API/baza — 7-qism), ko'rish (head — dastlabki qatorlar, info — ustunlar/turlar/yetishmayotgan, describe — raqamli statistika, shape — o'lcham). Sabab: ma'lumotni tanimasdan tahlil qilib bo'lmaydi (nima bor? qanday tur? qancha?); ko'rish ma'lumotni tushunadi (CRISP-DM 2-bosqich — ma'lumot tushunish 1.4). head (namuna), info (tuzilish), describe (statistika) — birinchi nazar. Bu EDA boshlanishi (9-qism). Yuklash/ko'rish — read_csv, head, info, describe. Birinchi qadam. Ma'lumotni tanish.
2.2. Tozalash va savol berish
Toza ma'lumot + aniq savol:
# TOZALASH (asosiy):
df.isnull().sum() # yetishmayotgan qiymatlar (qaysi ustun)
df = df.dropna() # yoki to'ldirish (6-qism)
df = df.drop_duplicates() # dublikat
# SAVOL (aniq maqsad):
# "Qaysi mahsulot eng ko'p daromad keltiradi?"
# → guruhlash + yig'indi + saralash Tozalash va savol berish — tahlilning ikki muhim qadami: tozalash (isnull().sum() — yetishmayotgan qaysi ustun, dropna/to'ldirish, drop_duplicates — dublikat; iflos ma'lumot → noto'g'ri tahlil — 6-qism), savol berish (aniq maqsad — "qaysi mahsulot eng ko'p daromad?"; noaniq savol → noaniq javob — 1.4 biznes tushunish). Sabab: tozalash to'g'ri natija uchun (garbage in, garbage out — 1.1); savol yo'nalish uchun (aniq savol → aniq tahlil). Bu ikki — CRISP-DM 1-3 bosqichlar (biznes savol + ma'lumot tayyorlash). Yaxshi savol aniq va o'lchanadigan (eng ko'p daromad — hisoblanadi). Tozalash/savol — toza ma'lumot + aniq maqsad. To'g'ri natija. Yo'nalish.
2.3. Guruhlash va tahlil
Ma'lumotdan javob chiqarish:
# GURUHLASH (guruh bo'yicha hisoblash):
daromad = df.groupby("mahsulot")["narx"].sum()
# har mahsulot bo'yicha jami daromad
# SARALASH (eng yuqori):
top = daromad.sort_values(ascending=False)
# FILTRLASH (shart bo'yicha):
toshkent = df[df["shahar"] == "Toshkent"] Guruhlash va tahlil — ma'lumotdan javob chiqarish: guruhlash (groupby — guruh bo'yicha hisoblash: har mahsulot daromadi = groupby("mahsulot")["narx"].sum()), saralash (sort_values — eng yuqori/pasti), filtrlash (df[shart] — shart bo'yicha: df[df["shahar"]=="Toshkent"]), agregatsiya (sum, mean, count — yig'indi/o'rtacha/son). Sabab: savolga javob ma'lumotni qayta ishlashdan keladi (guruhlash — "har mahsulot", saralash — "eng ko'p", filtr — "faqat Toshkent"); bu pandas asosiy amallari (4-5-qism). Guruhlash kuchli (murakkab savolga javob — har guruh statistika). Guruhlash/tahlil — groupby, sort, filter, agregat. Javob. Pandas kuchi.
2.4. Xulosa chiqarish
Tahlildan qaror:
# XULOSA — ma'lumotdan gaplashish:
# "A mahsuloti eng ko'p daromad (5000)"
# "Toshkent eng yaxshi bozor (60% savdo)"
# "Dushanba eng past kun (chegirma kerak?)"
# → qaror: A ni ko'proq, Toshkentga e'tibor, Dushanba aksiyaXulosa chiqarish — tahlildan qaror: natijani tushunarli qilish ("A mahsuloti eng ko'p daromad", "Toshkent eng yaxshi bozor") va qarorga aylantirish ("A ni ko'proq buyurt", "Toshkentga e'tibor"). Sabab: tahlil o'zi maqsad emas (raqamlar — vosita); maqsad — qaror (biznes/ilm foydasi — 1.1); xulosa ma'lumotni hikoyaga aylantiradi (raqam → ma'no → qaror). Bu CRISP-DM oxiri (baholash, joriy etish — 1.4). Xulosa aniq va amaliy ("A yaxshi" — mavhum; "A ni 20% ko'proq buyurt" — amaliy). Muhim: muloqot (natijani tushuntirish — 1.1). Xulosa — natija → ma'no → qaror. Amaliy. Muloqot.
2.5. To'liq tsikl (mini loyiha)
Boshidan oxirigacha:
MINI LOYIHA (uchdan oxirigacha):
1. YUKLA → pd.read_csv (ma'lumot)
2. KO'R → head, info, describe (tanish)
3. TOZALA → dropna, drop_duplicates (toza)
4. SAVOL → "qaysi mahsulot eng ko'p?"
5. TAHLIL → groupby, sort (javob)
6. XULOSA → "A eng ko'p → ko'proq buyurt"
→ CRISP-DM kichraytirilgan (model yo'q, tahlil yetdi)To'liq tsikl (mini loyiha) — boshidan oxirigacha: yukla → ko'r → tozala → savol → tahlil → xulosa. Bu CRISP-DM kichraytirilgan (1.4 — model bosqichisiz, chunki oddiy tahlil yetadi). Sabab: har Data Science ishi shu tsikl (kichik yoki katta — bir xil qadamlar); mini loyiha butun jarayonni bir marta ko'rsatadi (nazariya → amaliyot). Muhim: model har doim kerak emas (oddiy tahlil — guruhlash, saralash — ko'p savolga javob beradi; model faqat bashorat uchun); ko'p biznes savoli tahlil bilan hal bo'ladi (kim, nima, qancha — model emas). To'liq tsikl — yukla → xulosa. Mini CRISP-DM. Model doim emas.
2.6. Tahlil amaliyoti
Birinchi tahlil amaliyoti: avval ko'r (head, info, describe — ma'lumotni tanish); tozala (yetishmayotgan, dublikat — 6-qism); aniq savol (o'lchanadigan — "eng ko'p daromad"); guruhlash (groupby — savolga mos); saralash (eng yuqori/pasti); filtr (shart — "faqat X"); xulosa (raqam → qaror, amaliy); muloqot (tushuntirish); model doim emas (oddiy tahlil ko'p savolga javob). Tuzoqlar: ko'rmasdan tahlil (ma'lumot noma'lum), tozalamasdan (iflos → noto'g'ri), noaniq savol (noaniq javob), model'ga yugurish (tahlil yetadi), xulosasiz (raqamlar — qaror yo'q). Amaliyot — ko'r, tozala, savol, guruhlash, xulosa. Mini tsikl.
2.7. Tahlil tuzoqlari
Birinchi tahlil asosiy tuzoqlari: ko'rmasdan tahlil (head/info o'tkazib — ma'lumot noma'lum, xato tur/qiymat; avval ko'r); tozalamaslik (yetishmayotgan/dublikat — noto'g'ri natija, masalan bo'sh narxlar yig'indini buzadi; tozala); noaniq savol ("ma'lumotga qarayapman" — yo'nalishsiz; aniq savol); darhol model (oddiy tahlil yetganda model'ga yugurish — ortiqcha; tahlil avval); xulosasiz (raqamlar chiqardi, qaror yo'q — foydasiz; xulosa/qaror); noto'g'ri agregatsiya (o'rtacha kategorik — bema'ni 1.3; mos amal); outlier e'tiborsiz (bir katta qiymat o'rtachani buzadi — 1.5; median/tekshir). Sabab: tahlil tuzilgan bo'lishi kerak (ko'r → tozala → savol → javob); tartibsiz — noto'g'ri/foydasiz. Yechim: ko'r, tozala, aniq savol, xulosa. Tuzoqlar — ko'rmas, tozalamas, noaniq, xulosasiz.
2.8. Birinchi tahlil — savolga javob berish san'ati
Birinchi tahlil asosiy g'oyasi — savolga javob berish san'ati: Data Science asosi — ma'lumotga savol berib, undan javob topish (kim, nima, qancha, qaysi); bu murakkab model emas, oddiy tahlil (yukla, ko'r, tozala, guruhlash, xulosa). Mini loyiha CRISP-DM 1.4-bob ni kichraytirilgan ko'rsatadi (butun tsikl bir marta) — nazariyadan amaliyotga o'tish. Ko'p biznes savoli tahlil bilan hal bo'ladi (model kerak emas — kim eng ko'p, qaysi shahar); model faqat bashorat uchun (kelajak — kim ketadi). Bu 4-5-qism (Pandas) uchun poydevor (har amal — head/groupby/sort — keyin chuqurlashadi) va butun kurs uchun ramka (savol → javob). Birinchi tahlil — savol → javob (tahlil, model emas). San'at. Mini tsikl. Poydevor.
3. Tez ma'lumotnoma
MINI LOYIHA (uchdan oxirigacha):
1. YUKLA: df = pd.read_csv("fayl.csv")
2. KO'R: df.head() · df.info() · df.describe() · df.shape
3. TOZALA: df.isnull().sum() · df.dropna() · df.drop_duplicates()
4. SAVOL: "qaysi mahsulot eng ko'p daromad?"
5. TAHLIL: df.groupby("mahsulot")["narx"].sum().sort_values(ascending=False)
FILTR: df[df["shahar"] == "Toshkent"]
6. XULOSA: "A eng ko'p → ko'proq buyurt" (raqam → qaror)
QOIDA: avval ko'r · tozala · aniq savol · guruhlash · xulosa
(model doim emas — tahlil ko'p savolga javob)Birinchi tahlil xulosasi
Birinchi tahlil — savolga javob (mini CRISP-DM, model emas)
Yuklash/ko'rish — head, info, describe (ma'lumotni tanish)
Tozalash/savol — toza ma'lumot + aniq maqsad
Guruhlash/tahlil — groupby, sort, filter (javob)
Xulosa — raqam → ma'no → qaror (amaliy, muloqot)4. Batafsil misollar
Misollar real pandas bilan (deterministik ma'lumot) to'liq tahlilni ko'rsatadi.
Misol 1 — Yuklash va ko'rish
"""Yuklash va ko'rish: ma'lumotni tanish (real pandas)."""
import pandas as pd
def malumot() -> pd.DataFrame:
return pd.DataFrame({
"mahsulot": ["A", "B", "A", "C", "B", "A"],
"shahar": ["Toshkent", "Samarqand", "Toshkent", "Buxoro", "Toshkent", "Samarqand"],
"narx": [100, 200, 150, 300, 250, 120],
})
def main() -> None:
df = malumot()
print("=== 1. head (dastlabki qatorlar) ===")
print(df.head(3).to_string(index=False))
print("\n=== 2. shape (o'lcham) ===")
print(f" qatorlar: {df.shape[0]}, ustunlar: {df.shape[1]}")
print("\n=== 3. describe (raqamli statistika) ===")
print(f" narx o'rtacha: {df['narx'].mean():.0f}")
print(f" narx min-max: {df['narx'].min()}-{df['narx'].max()}")
print("\n=== 4. ustun turlari ===")
print(f" mahsulot: {df['mahsulot'].dtype} (kategorik)")
print(f" narx: {df['narx'].dtype} (raqamli)")
print(" ⭐ Avval ko'r (ma'lumotni tanish)")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. head (dastlabki qatorlar) ===
mahsulot shahar narx
A Toshkent 100
B Samarqand 200
A Toshkent 150
=== 2. shape (o'lcham) ===
qatorlar: 6, ustunlar: 3
=== 3. describe (raqamli statistika) ===
narx o'rtacha: 187
narx min-max: 100-300
=== 4. ustun turlari ===
mahsulot: str (kategorik)
narx: int64 (raqamli)
⭐ Avval ko'r (ma'lumotni tanish)Nima ko'rsatdi: 2.1-bo'lim.
Misol 2 — Tozalash
"""Tozalash: yetishmayotgan va dublikat (real pandas)."""
import pandas as pd
import numpy as np
def main() -> None:
df = pd.DataFrame({
"mahsulot": ["A", "B", "A", "A", "C"],
"narx": [100, np.nan, 150, 100, 300], # bitta bo'sh
})
# dublikat qator: A,100 ikki marta
print("=== 1. Boshlang'ich ===")
print(f" qatorlar: {len(df)}")
print("\n=== 2. Yetishmayotgan (isnull) ===")
print(f" bo'sh narx: {int(df['narx'].isnull().sum())} ta")
print("\n=== 3. dropna (bo'shni o'chirish) ===")
df2 = df.dropna()
print(f" qatorlar: {len(df2)}")
print("\n=== 4. drop_duplicates ===")
df3 = df2.drop_duplicates()
print(f" qatorlar: {len(df3)} (dublikat o'chdi)")
print(" ⭐ Tozalash — toza ma'lumot (to'g'ri natija)")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. Boshlang'ich ===
qatorlar: 5
=== 2. Yetishmayotgan (isnull) ===
bo'sh narx: 1 ta
=== 3. dropna (bo'shni o'chirish) ===
qatorlar: 4
=== 4. drop_duplicates ===
qatorlar: 3 (dublikat o'chdi)
⭐ Tozalash — toza ma'lumot (to'g'ri natija)Nima ko'rsatdi: 2.2-bo'lim.
Misol 3 — Guruhlash va saralash (savolga javob)
"""Guruhlash: qaysi mahsulot eng ko'p daromad (real pandas)."""
import pandas as pd
def main() -> None:
df = pd.DataFrame({
"mahsulot": ["A", "B", "A", "C", "B", "A"],
"narx": [100, 200, 150, 300, 250, 120],
})
print("=== 1. Savol: qaysi mahsulot eng ko'p daromad? ===")
print("\n=== 2. Guruhlash (mahsulot bo'yicha yig'indi) ===")
daromad = df.groupby("mahsulot")["narx"].sum()
for mahsulot, summa in daromad.items():
print(f" {mahsulot}: {summa}")
print("\n=== 3. Saralash (eng yuqori) ===")
top = daromad.sort_values(ascending=False)
print(f" tartib: {top.index.tolist()}")
print("\n=== 4. Javob ===")
print(f" eng ko'p daromad: {top.index[0]} ({top.iloc[0]})")
print(" ⭐ Guruhlash + saralash → savolga javob")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. Savol: qaysi mahsulot eng ko'p daromad? ===
=== 2. Guruhlash (mahsulot bo'yicha yig'indi) ===
A: 370
B: 450
C: 300
=== 3. Saralash (eng yuqori) ===
tartib: ['B', 'A', 'C']
=== 4. Javob ===
eng ko'p daromad: B (450)
⭐ Guruhlash + saralash → savolga javobNima ko'rsatdi: 2.3-bo'lim.
Misol 4 — To'liq tsikl (mini loyiha)
"""To'liq tsikl: yukla → tozala → tahlil → xulosa (real pandas)."""
import pandas as pd
def main() -> None:
# 1. YUKLA
df = pd.DataFrame({
"shahar": ["Toshkent", "Samarqand", "Toshkent", "Buxoro", "Toshkent"],
"narx": [100, 200, 150, 300, 250],
})
print("=== 1. Yukla + ko'r ===")
print(f" {len(df)} qator, ustunlar: {list(df.columns)}")
# 2. TAHLIL (savol: qaysi shahar eng ko'p savdo?)
print("\n=== 2. Savol: eng yaxshi bozor? ===")
savdo = df.groupby("shahar")["narx"].sum().sort_values(ascending=False)
for shahar, summa in savdo.items():
print(f" {shahar}: {summa}")
# 3. XULOSA
print("\n=== 3. Xulosa ===")
eng = savdo.index[0]
ulush = savdo.iloc[0] / savdo.sum() * 100
print(f" {eng} eng yaxshi bozor ({ulush:.0f}% savdo)")
print("\n=== 4. Qaror ===")
print(f" {eng}ga ko'proq e'tibor (marketing, zaxira)")
print(" ⭐ To'liq tsikl — savol → javob → qaror (model yo'q)")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. Yukla + ko'r ===
5 qator, ustunlar: ['shahar', 'narx']
=== 2. Savol: eng yaxshi bozor? ===
Toshkent: 500
Buxoro: 300
Samarqand: 200
=== 3. Xulosa ===
Toshkent eng yaxshi bozor (50% savdo)
=== 4. Qaror ===
Toshkentga ko'proq e'tibor (marketing, zaxira)
⭐ To'liq tsikl — savol → javob → qaror (model yo'q)Nima ko'rsatdi: 2.5-bo'lim.
5. To'g'ri va noto'g'ri tushunishlar
| Noto'g'ri fikr | To'g'risi |
|---|---|
| "Darhol tahlil" | Avval ko'r (head, info) |
| "Tozalash keyin" | Avval tozala (iflos → noto'g'ri) |
| "Har ish model kerak" | Tahlil ko'p savolga javob |
| "Savol keraksiz" | Aniq savol (yo'nalish) |
| "Raqamlar yetadi" | Xulosa → qaror (amaliy) |
| "groupby murakkab" | Savolga javob (kuchli) |
| "O'rtacha doim to'g'ri" | Mos amal (kategorik/outlier) |
| "Tahlil = model" | Tahlil (kim/nima), model (bashorat) |
6. Keng tarqalgan xatolar va yechimlari
1. Ko'rmasdan tahlil
df.groupby(...) # ma'lumot noma'lum (xato tur/qiymat) # ⚠️
df.head(); df.info() # avval ko'r # ✅2. Tozalashsiz
df["narx"].sum() # bo'sh qiymatlar (noto'g'ri) # ⚠️
df.dropna()["narx"].sum() # tozalab # ✅3. Model'ga yugurish
# "eng ko'p mahsulot" uchun ML model (ortiqcha) # ⚠️
df.groupby("mahsulot").sum() # tahlil yetadi # ✅4. Noaniq savol
# "ma'lumotga qarayapman" (yo'nalishsiz) # ⚠️
# "qaysi mahsulot eng ko'p daromad?" (aniq) # ✅5. Xulosasiz
df.groupby(...).sum() # raqamlar (qaror yo'q) # ⚠️
# "A eng ko'p → ko'proq buyurt" (qaror) # ✅6. Noto'g'ri agregatsiya
df.groupby("shahar")["shahar_kodi"].mean() # kodi o'rtachasi # ⚠️
df.groupby("shahar")["narx"].sum() # mos amal # ✅7. Outlier e'tiborsizlik
df["narx"].mean() # bir katta qiymat buzadi # ⚠️
df["narx"].median() # yoki outlier tekshir 1.5-bob # ✅7. Integratsiya — bu bilim qayerda kerak bo'ladi
- 1.4-dars (o'tilgan): CRISP-DM (bu — amaliyoti)
- 4-qism: Pandas asoslari (head, groupby)
- 5-qism: Pandas chuqur (guruhlash)
- 9-qism: EDA (razvedka tahlili)
- 6-qism: Tozalash (chuqur)
8. Eng yaxshi amaliyotlar
Avval ko'r (head, info, describe).
Tozala (yetishmayotgan, dublikat).
Aniq savol (o'lchanadigan — yo'nalish).
Guruhlash (savolga mos — groupby).
Xulosa → qaror (amaliy, muloqot).
Model doim emas (tahlil ko'p savolga javob).
Mos agregatsiya (kategorik/outlier ehtiyot).
To'liq tsikl (yukla → xulosa — tartibli).
9. Amaliy topshiriq
Vazifa 1: Bashorat qiling
1. # birinchi qadam?
2. # head nima?
3. # info nima?
4. # describe nima?
5. # tozalash nima?
6. # isnull nima?
7. # savol nega?
8. # groupby nima?
9. # sort_values nima?
10. # filter qanday?
11. # xulosa nima?
12. # model doim kerakmi?Javoblar
- Yuklash + ko'rish (ma'lumotni tanish)
- Dastlabki qatorlar (ko'rinish)
- Ustunlar, turlar, yetishmayotgan
- Raqamli statistika (o'rtacha, min, max)
- Yetishmayotgan/dublikat o'chirish
- Bo'sh qiymatlarni topish
- Aniq yo'nalish (aniq javob)
- Guruh bo'yicha hisoblash
- Saralash (eng yuqori/past)
- df[shart] (shart bo'yicha)
- Raqam → qaror (amaliy)
- Yo'q (tahlil ko'p savolga javob)
Vazifa 2: Xatolarni tuzating
1. df.groupby(...) # ko'rmasdan
2. df["narx"].sum() # tozalashsiz
3. # "eng ko'p" uchun ML model
4. # "ma'lumotga qarayapman"
5. df.groupby(...).sum() # xulosasizJavoblar
1. df.head(); df.info() (avval)
2. df.dropna()["narx"].sum()
3. df.groupby().sum() (tahlil yetadi)
4. "qaysi mahsulot eng ko'p?"
5. "A eng ko'p → qaror"Vazifa 3: Ko'rish
Modellang:
- head
- info
- describe
- Tanish
Vazifa 4: Tozalash
Modellang:
- isnull
- dropna
- drop_duplicates
- Toza
Vazifa 5: Tahlil
Modellang:
- groupby
- sort
- filter
- Javob
Vazifa 6: Xulosa
Modellang:
- Raqam
- Ma'no
- Qaror
- Muloqot
Vazifa 7: O'ylash
Ko'pchilik yangi Data Scientist "model qurish" ni maqsad deb o'ylaydi, lekin ko'p biznes savoli oddiy tahlil (guruhlash, saralash) bilan hal bo'ladi — model kerak emas. Nima uchun "eng oddiy yechim" (tahlil) ko'pincha "murakkab yechim" (ML model)dan yaxshiroq, va nega tajribasiz odamlar murakkablikni ortiqcha qadrlaydi?
Javob
Qisqa javob: "Eng oddiy yechim" ko'pincha yaxshiroq, chunki: oddiy tahlil (guruhlash, saralash) tushunarli (natija aniq — "A eng ko'p"), tez (bir necha qator kod), ishonchli (kam xato), tushuntiriladi (biznes egasi tushunadi); murakkab model (ML) — noaniq (qora quti), sekin (qurish/sozlash), xatoga moyil (overfitting), tushuntirish qiyin. Agar oddiy yechim savolga javob bersa — murakkablik ortiqcha (foydasiz murakkablik — 30.16 Python kursi, YAGNI). "Nega oddiy yaxshiroq": (1) maqsad — javob (murakkablik emas); oddiy tahlil javob bersa — yetadi; (2) tushunarli — biznes qaror uchun natija tushunilishi kerak (guruhlash — aniq, model — qora quti); (3) kam xato — oddiy kod kam buziladi (model — ko'p xato manbai: overfitting, noto'g'ri feature); (4) tez/arzon — tahlil daqiqalar, model kunlar. "Nega tajribasiz murakkablikni qadrlaydi": (a) murakkablik = aql xayoli — "ML model qurdim" ta'sirli, "guruhladim" oddiy tuyuladi (lekin ikkinchisi yetsa — yaxshiroq); (b) yangi vositani ishlatish istagi — ML o'rgandim → ishlataman (bolg'a bor → hamma narsa mix); (c) muammoni tushunmaslik — oddiy yechimni ko'rmaydi (murakkabga yuguradi); (d) glamur — ML jozibali (media, trend), tahlil zerikarli. Lekin usta eng oddiy yetadigan yechimni tanlaydi (murakkablik faqat zarurat — bashorat kerak bo'lsa model). Bu umumiy muhandislik tamoyili: soddalik afzal (Occam ustarasi — 27-qism); murakkablik faqat kerak bo'lganda (foyda > narx); tajriba — oddiyni qadrlash (murakkablik oson, soddalik qiyin). Saboqlar: eng oddiy yetadigan yechim (murakkablik ortiqcha); tahlil ko'p savolga javob (model faqat bashorat); tajribasiz murakkablikni qadrlaydi (glamur, vosita istagi); usta soddalikni tanlaydi (tushunarli, tez, ishonchli). Misolda: "eng ko'p mahsulot" — groupby (oddiy), ML emas (ortiqcha).
1. Nega oddiy yaxshiroq
- Maqsad — javob (murakkablik emas)
- Tushunarli (biznes tushunadi, model qora quti)
- Kam xato (oddiy kod — kam buziladi)
- Tez/arzon (daqiqa vs kun)
2. Nega tajribasiz murakkablikni qadrlaydi
- Murakkablik = aql xayoli ("ML qurdim" ta'sirli)
- Yangi vosita istagi (bolg'a → mix)
- Muammoni tushunmaslik (oddiyni ko'rmas)
- Glamur (ML jozibali, tahlil zerikarli)
3. Oddiy vs murakkab
| Jihat | Oddiy (tahlil) | Murakkab (ML) |
|---|---|---|
| Tushunarli | Ha (aniq) | Yo'q (qora quti) |
| Tezlik | Daqiqa | Kun |
| Xato | Kam | Ko'p |
| Qachon | Javob yetsa | Bashorat kerak |
4. Soddalik afzal (Occam)
Murakkablik faqat zarurat (foyda > narx). Usta oddiyni tanlaydi (murakkablik oson, soddalik qiyin).
5. Saboqlar
- Eng oddiy yetadigan yechim (murakkablik ortiqcha)
- Tahlil ko'p savolga javob (model bashorat)
- Tajribasiz murakkablikni qadrlaydi (glamur)
- Usta soddalikni tanlaydi (tushunarli, tez)
6. Xulosa
- Oddiy yaxshiroq (tushunarli, tez, ishonchli)
- Model doim emas (tahlil ko'p savolga)
- Murakkablik faqat zarurat (bashorat)
- Soddalikni tanla (usta belgisi)
Nimani mustahkamlaydi: 2.5, 2.8-bo'limlar.
Xulosa
Bu darsda birinchi tahlilni qildik.
Eng muhim uch fikr:
Yuklash, ko'rish, tozalash, savol. Ma'lumotni yuklash va ko'rish:
pd.read_csv(DataFrame),head(dastlabki qatorlar),info(ustunlar/turlar/yetishmayotgan),describe(statistika),shape(o'lcham); ma'lumotni tanimasdan tahlil qilib bo'lmaydi (CRISP-DM ma'lumot tushunish). Tozalash va savol berish: tozalash (isnull().sum(),dropna,drop_duplicates— iflos → noto'g'ri), savol (aniq maqsad — "qaysi mahsulot eng ko'p daromad?"); toza ma'lumot + aniq savol (to'g'ri natija + yo'nalish).Guruhlash, tahlil, xulosa. Guruhlash va tahlil:
groupby(guruh bo'yicha — har mahsulot daromadi),sort_values(eng yuqori),df[shart](filtr),sum/mean/count(agregatsiya); savolga javob ma'lumotni qayta ishlashdan. Xulosa chiqarish: natijani tushunarli ("A eng ko'p daromad") va qarorga ("A ni ko'proq buyurt"); tahlil o'zi maqsad emas — qaror (raqam → ma'no → qaror), muloqot muhim.To'liq tsikl va san'at. To'liq tsikl (mini loyiha): yukla → ko'r → tozala → savol → tahlil → xulosa — CRISP-DM kichraytirilgan 1.4-bob; model har doim kerak emas (oddiy tahlil ko'p savolga javob — kim/nima/qancha; model faqat bashorat). Birinchi tahlil — savolga javob berish san'ati: ma'lumotga savol berib undan javob topish (tahlil, murakkab model emas); nazariyadan amaliyotga o'tish, 4-5-qism (Pandas) uchun poydevor. Eng oddiy yetadigan yechim murakkabdan yaxshi (tushunarli, tez, ishonchli — Occam ustarasi); tajribasiz odamlar murakkablikni ortiqcha qadrlaydi (glamur, vosita istagi), usta soddalikni tanlaydi.
Bu bilan 1-bosqichning kirish qismi nazariy poydevorni berdi. Keyingi darsda Data Science etikasini chuqur o'rganamiz: bias, maxfiylik, adolat va mas'uliyatli AI — ma'lumot kuchini to'g'ri ishlatish.
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!