Mundarija (22)
- 1. Kirish va motivatsiya
- 2. Nazariya — chuqur tushuntirish
- 2.1. Seaborn nima
- 2.2. Kategoriya grafiklari
- 2.3. Taqsimot (histplot, kdeplot)
- 2.4. Bog'lanish (scatterplot, regplot)
- 2.5. Korrelyatsiya (heatmap)
- 2.6. Mavzu va uslub (set_theme)
- 2.7. Seaborn vs Matplotlib
- 2.8. Statistik vizualizatsiya
- 3. Tez ma'lumotnoma
- 4. Batafsil misollar
- Misol 1 — Kategoriya grafiklari
- Misol 2 — Taqsimot va bog'lanish
- Misol 3 — Korrelyatsiya (heatmap)
- Misol 4 — Amaliy: statistik hisobot
- 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
24.14-dars: Seaborn
24-QISM — MA'LUMOT TAHLILI · 14-dars
1. Kirish va motivatsiya
24.13 da Matplotlib bilan grafik chizdik. Matplotlib kuchli, lekin past daraja (past-level): chiroyli, statistik grafik uchun ko'p kod (rang, uslub, statistika qo'lda). Har safar groupby + bar, korrelyatsiya + heatmap — takror ish. Statistik vizualizatsiya (taqsimot, bog'lanish, kategoriya) uchun yuqori daraja vosita kerak.
Seaborn — Matplotlib ustida qurilgan statistik vizualizatsiya kutubxonasi: DataFrame bilan bevosita (sns.barplot(data=df, x=..., y=...)), statistika avtomatik (o'rtacha, ishonch oraligi), chiroyli standart (rang, uslub). Bir qatorda murakkab grafik. barplot, scatterplot, histplot, boxplot, heatmap (korrelyatsiya). Seaborn tahlilchi uchun — tez, chiroyli statistik grafik. Matplotlib'ni almashtirmaydi — uni osonlashtiradi (ustida ishlaydi).
Real vaziyat. Bir tahlilda har kategoriya bo'yicha o'rtacha narx grafigi kerak edi. Matplotlib bilan: groupby + mean + bar + rang + xatolik chizigi — 10 qator. Seaborn bilan: sns.barplot(data=df, x="kat", y="narx") — bir qator (o'rtacha, ishonch oraligi avtomatik). Chiroyli, tez. Seaborn statistik grafiklarni keskin osonlashtiradi.
Bu darsda Seaborn bilan statistik vizualizatsiyani o'rganamiz.
Bu darsda:
- Seaborn nima (Matplotlib ustida)
- Kategoriya grafiklari (
barplot,boxplot) - Taqsimot (
histplot,kdeplot) - Bog'lanish (
scatterplot,regplot) - Korrelyatsiya (
heatmap) - Mavzu va uslub (
set_theme) - Seaborn vs Matplotlib
- Amaliy: statistik hisobot
ℹ Misollarda Seaborn (
Aggbackend) bilan sinaladi; grafik xususiyatlari tekshiriladi.
2. Nazariya — chuqur tushuntirish
2.1. Seaborn nima
Seaborn — statistik vizualizatsiya:
import seaborn as sns
sns.barplot(data=df, x="kategoriya", y="narx")
# DataFrame bilan bevosita, o'rtacha + ishonch oraligi avtomatik Seaborn — Matplotlib ustida qurilgan statistik vizualizatsiya kutubxonasi: DataFrame bilan bevosita (data=df, x=..., y=...), statistika avtomatik (o'rtacha, taqsimot), chiroyli standart. import seaborn as sns. Matplotlib'dan farq: yuqori daraja (kam kod), statistika ichida, DataFrame-markazli. Matplotlib ustida (natija — Matplotlib ax). Statistik grafik uchun tez va chiroyli.
2.2. Kategoriya grafiklari
Toifa bo'yicha:
sns.barplot(data=df, x="kat", y="narx") # o'rtacha (avtomatik)
sns.boxplot(data=df, x="kat", y="narx") # kvartil, chetlanish
sns.countplot(data=df, x="kat") # har toifa soni
sns.violinplot(data=df, x="kat", y="narx") # taqsimot + kvartil Kategoriya grafiklari: barplot (har toifa o'rtachasi — avtomatik + ishonch oraligi), boxplot (kvartil, mediana, chetlanish — taqsimot xulosasi), countplot (har toifa soni — value_counts grafigi), violinplot (taqsimot shakli + kvartil). Bular 24.9 (guruhlash) ni grafik qiladi — groupby avtomatik. Toifalarni taqqoslashda kuchli.
2.3. Taqsimot (histplot, kdeplot)
Bir o'zgaruvchi tarqalishi:
sns.histplot(data=df, x="narx", bins=20) # gistogramma
sns.kdeplot(data=df, x="narx") # silliq taqsimot (zichlik)
sns.histplot(data=df, x="narx", kde=True) # ikkalasi Taqsimot grafiklari: histplot (gistogramma — 24.13 hist, lekin chiroyli), kdeplot (zichlik — silliq taqsimot egri chizig'i, gistogrammaning silliq versiyasi), kde=True (gistogramma + egri). Bu ma'lumot shaklini (normal, egri, ikki cho'qqi) ko'rsatadi. Statistika 24.16-bob da muhim — taqsimotni tushunish. Ma'lumot tabiatini ko'rish.
2.4. Bog'lanish (scatterplot, regplot)
Ikki o'zgaruvchi:
sns.scatterplot(data=df, x="narx", y="sotuv") # soch
sns.scatterplot(data=df, x="narx", y="sotuv", hue="kat") # rang = toifa
sns.regplot(data=df, x="narx", y="sotuv") # + regressiya chizig'i Bog'lanish grafiklari: scatterplot (soch — ikki o'zgaruvchi, 24.13 kabi), hue="kat" (uchinchi o'lcham — rang bilan toifa), regplot (soch + regressiya chizig'i — trend). hue — Seaborn kuchi (uchinchi o'zgaruvchi rang bilan). Bu korrelyatsiya (narx oshsa sotuv-chi?) ni ko'rsatadi. Bog'lanishni tahlil qilish.
2.5. Korrelyatsiya (heatmap)
Ustunlar orasidagi bog'lanish:
korr = df.corr(numeric_only=True) # korrelyatsiya matritsasi
sns.heatmap(korr, annot=True) # issiqlik xarita (rang + son)
sns.heatmap(korr, annot=True, cmap="coolwarm") heatmap — matritsani rang bilan (issiqlik xarita): df.corr() (korrelyatsiya matritsasi — har ustun juftligi bog'lanishi, -1 dan 1 gacha) + sns.heatmap(korr, annot=True) (rang = kuch, annot = son). Bu ko'p ustun orasidagi bog'lanishni bir qarashda ko'rsatadi (qaysi ustunlar bog'liq). Xususiyat tanlovi (ML, 25), tahlilda juda foydali. Ko'p o'zgaruvchi bog'lanishi.
2.6. Mavzu va uslub (set_theme)
Chiroyli ko'rinish:
sns.set_theme(style="whitegrid") # to'r foni
sns.set_theme(style="darkgrid") # qorong'i to'r
sns.set_palette("pastel") # rang palitrasi set_theme(style=...) — global uslub (barcha grafikka): "whitegrid" (oq fon + to'r — ko'p ishlatiladi), "darkgrid", "white", "ticks". set_palette (rang palitrasi). Seaborn standart chiroyli (Matplotlib'dan yaxshiroq ko'rinish), set_theme bilan yanada sozlash. Bu barcha grafikni bir xil, professional ko'rinishda qiladi. Hisobot uchun muhim.
2.7. Seaborn vs Matplotlib
| Xususiyat | Seaborn | Matplotlib |
|---|---|---|
| Daraja | Yuqori | Past |
| DataFrame | Bevosita | Qo'lda |
| Statistika | Avtomatik | Qo'lda |
| Nazorat | Kam | To'liq |
| Standart | Chiroyli | Oddiy |
Seaborn — yuqori daraja (statistik grafik tez, chiroyli, DataFrame bilan); Matplotlib — past daraja (to'liq nazorat, har detal). Seaborn Matplotlib ustida (natija — ax, Matplotlib bilan sozlash mumkin). Qoida: statistik grafik (taqsimot, kategoriya, korrelyatsiya) → Seaborn; maxsus/to'liq nazorat → Matplotlib. Ko'pincha ikkalasi (Seaborn chizadi, Matplotlib sozlaydi).
2.8. Statistik vizualizatsiya
Seaborn statistik vizualizatsiyani osonlashtiradi: groupby + bar (24.9 + 24.13) → barplot (bir qator), taqsimot → histplot/kdeplot, korrelyatsiya → heatmap. Statistika (o'rtacha, ishonch oraligi, regressiya) avtomatik. Bu tahlilchiga tez kashfiyot (exploration) beradi — ma'lumotni tez ko'rib tushunish. "Ma'lumotni tez ko'rish" — Seaborn kuchi. 24.16 (statistika) bilan chambarchas — grafik statistikani ko'rsatadi.
3. Tez ma'lumotnoma
import seaborn as sns
sns.set_theme(style="whitegrid")
# kategoriya:
sns.barplot(data=df, x="kat", y="narx") # o'rtacha
sns.boxplot(data=df, x="kat", y="narx") # kvartil
sns.countplot(data=df, x="kat") # soni
# taqsimot:
sns.histplot(data=df, x="narx", bins=20, kde=True)
sns.kdeplot(data=df, x="narx") # zichlik
# bog'lanish:
sns.scatterplot(data=df, x="narx", y="sotuv", hue="kat")
sns.regplot(data=df, x="narx", y="sotuv") # + regressiya
# korrelyatsiya:
korr = df.corr(numeric_only=True)
sns.heatmap(korr, annot=True, cmap="coolwarm")
# Matplotlib bilan sozlash:
ax = sns.barplot(...)
ax.set_title("...")Seaborn xulosasi
Matplotlib ustida · DataFrame bevosita · statistika avtomatik
barplot/boxplot/countplot (kategoriya) · histplot/kdeplot (taqsimot)
scatterplot/regplot (bog'lanish, hue) · heatmap (korrelyatsiya)4. Batafsil misollar
Misollarda Seaborn (
Aggbackend — ekransiz) bilan sinaladi. Grafik xususiyatlari (element soni) tekshiriladi (rasm emas).
Misol 1 — Kategoriya grafiklari
"""barplot (o'rtacha), boxplot (kvartil), countplot (soni) — DataFrame bilan bevosita."""
import warnings
warnings.filterwarnings("ignore")
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
def main() -> None:
df = pd.DataFrame({
"kategoriya": ["kurs", "kitob", "kurs", "kitob", "kurs", "kitob"],
"narx": [100, 50, 120, 60, 90, 55],
})
print("=== 1. barplot (o'rtacha avtomatik) ===")
ax = sns.barplot(data=df, x="kategoriya", y="narx")
print(f" ustunlar soni: {len(ax.patches)}")
plt.close("all")
print("\n=== 2. boxplot (kvartil, taqsimot) ===")
ax2 = sns.boxplot(data=df, x="kategoriya", y="narx")
print(f" boxplot yaratildi: {ax2 is not None}")
plt.close("all")
print("\n=== 3. countplot (har toifa soni) ===")
ax3 = sns.countplot(data=df, x="kategoriya")
print(f" ustunlar (toifalar): {len(ax3.patches)}")
plt.close("all")
print("\n=== 4. Matplotlib bilan bezash ===")
ax4 = sns.barplot(data=df, x="kategoriya", y="narx")
ax4.set_title("O'rtacha narx")
ax4.set_ylabel("Narx")
print(f" title: {ax4.get_title()}")
plt.close("all")
print(" ⭐ barplot/boxplot/countplot — kategoriya statistikasi")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. barplot (o'rtacha avtomatik) ===
ustunlar soni: 2
=== 2. boxplot (kvartil, taqsimot) ===
boxplot yaratildi: True
=== 3. countplot (har toifa soni) ===
ustunlar (toifalar): 2
=== 4. Matplotlib bilan bezash ===
title: O'rtacha narx
⭐ barplot/boxplot/countplot — kategoriya statistikasiNima ko'rsatdi: 2.2-bo'lim.
Misol 2 — Taqsimot va bog'lanish
"""histplot (taqsimot), scatterplot (bog'lanish, hue), regplot (regressiya chizig'i)."""
import warnings
warnings.filterwarnings("ignore")
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
def main() -> None:
df = pd.DataFrame({
"narx": [100, 120, 80, 150, 90, 110, 130, 70],
"sotildi": [50, 40, 60, 30, 55, 45, 35, 65],
"kategoriya": ["A", "B", "A", "B", "A", "B", "A", "B"],
})
print("=== 1. histplot (taqsimot) ===")
ax = sns.histplot(data=df, x="narx", bins=4)
print(f" binlar (ustun): {len(ax.patches)}")
plt.close("all")
print("\n=== 2. scatterplot (bog'lanish) ===")
ax2 = sns.scatterplot(data=df, x="narx", y="sotildi")
print(f" scatter yaratildi: {len(ax2.collections) >= 1}")
plt.close("all")
print("\n=== 3. scatterplot + hue (toifa rang bilan) ===")
ax3 = sns.scatterplot(data=df, x="narx", y="sotildi", hue="kategoriya")
print(f" hue bilan (legend): {ax3.get_legend() is not None}")
plt.close("all")
print("\n=== 4. regplot (regressiya chizig'i) ===")
ax4 = sns.regplot(data=df, x="narx", y="sotildi")
print(f" chiziqlar (regressiya): {len(ax4.lines) >= 1}")
plt.close("all")
print(" ⭐ histplot (taqsimot), scatter/regplot (bog'lanish)")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. histplot (taqsimot) ===
binlar (ustun): 4
=== 2. scatterplot (bog'lanish) ===
scatter yaratildi: True
=== 3. scatterplot + hue (toifa rang bilan) ===
hue bilan (legend): True
=== 4. regplot (regressiya chizig'i) ===
chiziqlar (regressiya): True
⭐ histplot (taqsimot), scatter/regplot (bog'lanish)Nima ko'rsatdi: 2.3, 2.4-bo'limlar.
Misol 3 — Korrelyatsiya (heatmap)
"""corr (korrelyatsiya matritsasi); heatmap (rang + annot); ustunlar bog'lanishi."""
import warnings
warnings.filterwarnings("ignore")
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
def main() -> None:
df = pd.DataFrame({
"narx": [100, 120, 80, 150, 90],
"sotildi": [50, 40, 60, 30, 55],
"daromad": [5000, 4800, 4800, 4500, 4950],
})
print("=== 1. Korrelyatsiya matritsasi (corr) ===")
korr = df.corr(numeric_only=True)
print(f" matritsa o'lchami: {korr.shape}")
print(f" narx-sotildi korrelyatsiya: {round(korr.loc['narx', 'sotildi'], 2)}")
print("\n=== 2. heatmap (issiqlik xarita) ===")
ax = sns.heatmap(korr, annot=True, cmap="coolwarm")
print(f" heatmap yaratildi: {ax is not None}")
plt.close("all")
print("\n=== 3. Korrelyatsiya talqini ===")
print(f" narx-sotildi manfiy (teskari): {korr.loc['narx', 'sotildi'] < 0}")
print(f" o'zi bilan korrelyatsiya: {korr.loc['narx', 'narx']}")
print("\n=== 4. Kuchli bog'lanish ===")
print(f" |korrelyatsiya| > 0.5 juftliklar bor: {(korr.abs() > 0.5).sum().sum() > len(korr)}")
print(" ⭐ heatmap — ustunlar orasidagi korrelyatsiya (bir qarashda)")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. Korrelyatsiya matritsasi (corr) ===
matritsa o'lchami: (3, 3)
narx-sotildi korrelyatsiya: -1.0
=== 2. heatmap (issiqlik xarita) ===
heatmap yaratildi: True
=== 3. Korrelyatsiya talqini ===
narx-sotildi manfiy (teskari): True
o'zi bilan korrelyatsiya: 1.0
=== 4. Kuchli bog'lanish ===
|korrelyatsiya| > 0.5 juftliklar bor: True
⭐ heatmap — ustunlar orasidagi korrelyatsiya (bir qarashda)Nima ko'rsatdi: 2.5-bo'lim.
Misol 4 — Amaliy: statistik hisobot
Real misol: sotuv ma'lumoti — kategoriya taqqoslash (barplot), taqsimot (histplot), korrelyatsiya (heatmap), mavzu. To'liq statistik hisobot. Bu — Seaborn tahlilining namunasi.
"""to'liq statistik hisobot: set_theme, barplot, histplot, heatmap — bir necha grafik."""
import warnings
warnings.filterwarnings("ignore")
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
def main() -> None:
df = pd.DataFrame({
"kategoriya": ["kurs", "kitob", "video", "kurs", "kitob", "video"],
"narx": [100, 50, 200, 120, 60, 180],
"sotildi": [50, 40, 20, 45, 35, 25],
})
df["daromad"] = df["narx"] * df["sotildi"]
print("=== 1. Mavzu o'rnatish (set_theme) ===")
sns.set_theme(style="whitegrid")
print(" whitegrid mavzu o'rnatildi")
print("\n=== 2. Kategoriya bo'yicha o'rtacha daromad (barplot) ===")
ax = sns.barplot(data=df, x="kategoriya", y="daromad")
ax.set_title("Kategoriya daromadi")
print(f" ustunlar: {len(ax.patches)}, title: {ax.get_title()}")
plt.close("all")
print("\n=== 3. Narx taqsimoti (histplot) ===")
ax2 = sns.histplot(data=df, x="narx", bins=3)
print(f" binlar: {len(ax2.patches)}")
plt.close("all")
print("\n=== 4. Korrelyatsiya (heatmap) ===")
korr = df[["narx", "sotildi", "daromad"]].corr()
ax3 = sns.heatmap(korr, annot=True)
print(f" korrelyatsiya matritsasi: {korr.shape}")
print(f" narx-daromad bog'lanish: {round(korr.loc['narx', 'daromad'], 2)}")
plt.close("all")
print(" ⭐ set_theme + barplot + histplot + heatmap — statistik hisobot")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. Mavzu o'rnatish (set_theme) ===
whitegrid mavzu o'rnatildi
=== 2. Kategoriya bo'yicha o'rtacha daromad (barplot) ===
ustunlar: 3, title: Kategoriya daromadi
=== 3. Narx taqsimoti (histplot) ===
binlar: 3
=== 4. Korrelyatsiya (heatmap) ===
korrelyatsiya matritsasi: (3, 3)
narx-daromad bog'lanish: 0.58
⭐ set_theme + barplot + histplot + heatmap — statistik hisobotNima ko'rsatdi: 2.1–2.8-bo'limlar.
5. To'g'ri va noto'g'ri tushunishlar
| Noto'g'ri fikr | To'g'risi |
|---|---|
| "Seaborn Matplotlib o'rniga" | Ustida (birga ishlaydi) |
"barplot — xom qiymat" |
O'rtacha (avtomatik statistika) |
| "DataFrame kerak emas" | data=df bilan bevosita |
"hue keraksiz" |
Uchinchi o'zgaruvchi (rang) |
| "heatmap faqat chiroyli" | Korrelyatsiya (ma'noli) |
| "Seaborn nazorat beradi" | Kam (Matplotlib — to'liq) |
| "Statistika qo'lda" | Avtomatik (o'rtacha, regressiya) |
"set_theme bir grafikka" |
Global (barcha) |
6. Keng tarqalgan xatolar va yechimlari
1. data= unutish
sns.barplot(x=df["kat"], y=df["narx"]) # ishlaydi, lekin
sns.barplot(data=df, x="kat", y="narx") # ✅ toza2. Seaborn'ni Matplotlib o'rniga deb o'ylash
ax = sns.barplot(...) # ax — Matplotlib obyekti
ax.set_title(...) # ✅ Matplotlib bilan sozla3. Grafikni yopmaslik
# ko'p grafik ochiq # ⚠️ xotira
plt.close("all") # ✅4. barplot xom qiymat kutish
# barplot o'rtacha ko'rsatadi (xom emas) # bilib ishla
# xom uchun: kategoriya bir qiymatli yoki boshqa grafik5. corr matn ustun bilan
df.corr() # matn ustun xato # ⚠️
df.corr(numeric_only=True) # ✅6. hue uchun ustun yo'q
sns.scatterplot(..., hue="yoq_ustun") # KeyError # ⚠️
# mavjud ustun nomi # ✅7. set_theme grafikdan keyin
sns.barplot(...); sns.set_theme(...) # ta'sir qilmaydi # ⚠️
sns.set_theme(...); sns.barplot(...) # ✅ avval7. Integratsiya — bu bilim qayerda kerak bo'ladi
- 24.13-dars (o'tilgan): Matplotlib — Seaborn asosi
- 24.9-dars (o'tilgan): Guruhlash — barplot avtomatik
- 24.16-dars: Statistika — taqsimot, korrelyatsiya
- 25-qism: ML — xususiyat tahlili (heatmap)
- 24.18-dars: Amaliy loyiha — hisobot
8. Eng yaxshi amaliyotlar
Statistik grafik — Seaborn (tez, chiroyli).
DataFrame bilan (
data=df, x=..., y=...).Uchinchi o'zgaruvchi —
hue.Korrelyatsiya —
heatmap+annot.set_theme— grafikdan oldin (global).Matplotlib bilan sozla (
ax).corr(numeric_only=True).Grafikni yop (
plt.close).
9. Amaliy topshiriq
Vazifa 1: Bashorat qiling
1. # Seaborn nima?
2. # Matplotlib bilan aloqasi?
3. # barplot nima ko'rsatadi?
4. # boxplot nima?
5. # histplot nima?
6. # scatterplot nima?
7. # hue nima?
8. # regplot nima?
9. # heatmap nima?
10. # corr nima?
11. # set_theme nima?
12. # Seaborn vs Matplotlib?Javoblar
- Statistik vizualizatsiya (Matplotlib ustida)
- Matplotlib ustida (natija — ax)
- Har toifa o'rtachasi (avtomatik)
- Kvartil, taqsimot xulosasi
- Taqsimot (gistogramma)
- Bog'lanish (soch)
- Uchinchi o'zgaruvchi (rang)
- Soch + regressiya chizig'i
- Matritsa (korrelyatsiya) rang bilan
- Korrelyatsiya matritsasi
- Global uslub (mavzu)
- Seaborn yuqori daraja, Matplotlib past
Vazifa 2: Xatolarni tuzating
1. df.corr() # matn ustun # numeric_only
2. sns.barplot(...); sns.set_theme() # avval theme
3. # grafik ochiq qoladi # plt.close
4. ax = sns.barplot(...) # title-chi? # ax.set_title
5. sns.scatterplot(..., hue="yoq") # mavjud ustunJavoblar
1. df.corr(numeric_only=True)
2. sns.set_theme(); sns.barplot(...)
3. plt.close("all")
4. ax.set_title("...")
5. sns.scatterplot(..., hue="kategoriya")Vazifa 3: Kategoriya
Grafik:
barplotboxplotcountplot- Bezash
Vazifa 4: Taqsimot/bog'lanish
Grafik:
histplotscatterplothueregplot
Vazifa 5: Korrelyatsiya
Heatmap:
corrheatmapannot- Talqin
Vazifa 6: Hisobot
To'liq:
set_themebarplothistplotheatmap
Vazifa 7: O'ylash
Seaborn Matplotlib ustida qurilgan — Matplotlib'ni almashtirmaydi, uni osonlashtiradi (statistik grafik tez, chiroyli). Bu "abstraksiya qatlami" (layered abstraction) — past daraja (Matplotlib — to'liq nazorat) ustida yuqori daraja (Seaborn — qulaylik). Nima uchun "qulaylik uchun yuqori daraja, nazorat uchun past daraja" foydali, va nega yaxshi muhandis ikkalasini biladi (Seaborn tez, lekin kerakda Matplotlib)?
Javob
Qisqa javob: Seaborn (yuqori daraja) Matplotlib (past daraja) ustida — qatlamli abstraksiya: Seaborn oddiy holatni tez (bir qator — barplot), Matplotlib maxsus holatni to'liq (har detal). "Qulaylik uchun yuqori, nazorat uchun past" foydali, chunki: ko'p holda oddiy grafik kerak (Seaborn — tez), lekin ba'zan maxsus sozlash kerak (Matplotlib — to'liq). Seaborn natijasi Matplotlib ax — shuning uchun Seaborn'da chizib, Matplotlib'da sozlash mumkin (ikkalasi birga). Yaxshi muhandis ikkalasini biladi: default — yuqori daraja (Seaborn — 90% holat, tez), kerakda — past daraja (Matplotlib — maxsus, to'liq nazorat). "To'g'ri daraja to'g'ri ish uchun" — oddiy uchun qulay, murakkab uchun kuchli.
1. Qatlamli abstraksiya
| Daraja | Vosita | Xususiyat |
|---|---|---|
| Yuqori | Seaborn | Qulay, tez, kam nazorat |
| Past | Matplotlib | Murakkab, to'liq nazorat |
Seaborn — Matplotlib ustida (natija — ax).
2. Nega ikki daraja
- Oddiy grafik (90%): Seaborn (bir qator — tez)
- Maxsus grafik (10%): Matplotlib (har detal — to'liq)
Bir vosita ikkalasini qilolmaydi (qulaylik vs nazorat — o'zaro almashinadi).
3. Birga ishlash
Seaborn ax qaytaradi (Matplotlib obyekti) — Seaborn'da chizib, Matplotlib'da sozla (ax.set_title). Ikki daraja birga.
4. Yaxshi muhandis qanday
- Default: yuqori daraja (Seaborn — tez)
- Kerakda: past daraja (Matplotlib — maxsus)
- Ikkalasini bil (birga ishlat)
5. Muhandislik saboqlari
- Qatlamli abstraksiya (yuqori/past)
- Yuqori — qulaylik (Seaborn)
- Past — nazorat (Matplotlib)
- Ikkalasini bil (to'g'ri daraja)
6. Xulosa
- Seaborn — Matplotlib ustida (osonlashtiradi)
- Yuqori (qulay) / past (nazorat)
- Birga ishlaydi (ax)
- To'g'ri daraja to'g'ri ish uchun
Nimani mustahkamlaydi: 2.1–2.8-bo'limlar.
Xulosa
Bu darsda Seaborn bilan statistik vizualizatsiyani o'rgandik.
Eng muhim uch fikr:
Seaborn — statistik vizualizatsiya (Matplotlib ustida). Seaborn — Matplotlib ustida qurilgan statistik vizualizatsiya kutubxonasi: DataFrame bilan bevosita (
sns.barplot(data=df, x="kat", y="narx")), statistika avtomatik (o'rtacha, ishonch oraligi, regressiya), chiroyli standart. Matplotlib'dan farq: yuqori daraja (kam kod), statistika ichida, DataFrame-markazli. Natija — Matplotlibax(birga sozlash). Statistik grafik uchun tez va chiroyli.Grafik turlari. Kategoriya:
barplot(o'rtacha — avtomatik),boxplot(kvartil, chetlanish),countplot(soni),violinplot(taqsimot). Taqsimot:histplot(gistogramma),kdeplot(zichlik — silliq egri),kde=True. Bog'lanish:scatterplot(soch),hue="kat"(uchinchi o'zgaruvchi — rang),regplot(regressiya chizig'i). Korrelyatsiya:df.corr(numeric_only=True)+heatmap(korr, annot=True)(ustunlar orasidagi bog'lanish — bir qarashda).set_theme(style="whitegrid")— global uslub.Seaborn vs Matplotlib va qatlamli abstraksiya. Seaborn — yuqori daraja (statistik grafik tez, chiroyli, DataFrame bilan); Matplotlib — past daraja (to'liq nazorat). Seaborn Matplotlib ustida (qatlamli abstraksiya — natija
ax, birga sozlash). Qoida: statistik grafik (taqsimot, kategoriya, korrelyatsiya) → Seaborn; maxsus/to'liq nazorat → Matplotlib. "Qulaylik uchun yuqori daraja (Seaborn — 90% holat), nazorat uchun past daraja (Matplotlib — maxsus)". Yaxshi muhandis ikkalasini biladi. Seaborn statistik kashfiyotni (ma'lumotni tez ko'rib tushunish) osonlashtiradi — 24.16 (statistika) bilan chambarchas.
Keyingi darsda interaktiv vizualizatsiya ni o'rganamiz: Plotly bilan — sichqoncha bilan boshqariladigan, kattalashtiriladigan grafiklar (statik emas) — veb va dashboard uchun.
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!