IlmHamroh
Python kursi/Malumot tahlili14/18-dars15 daqiqa
Mundarija (22)

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 (Agg backend) bilan sinaladi; grafik xususiyatlari tekshiriladi.


2. Nazariya — chuqur tushuntirish

2.1. Seaborn nima

Seaborn — statistik vizualizatsiya:

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

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

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

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

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

python
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

python
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 (Agg backend — ekransiz) bilan sinaladi. Grafik xususiyatlari (element soni) tekshiriladi (rasm emas).

Misol 1 — Kategoriya grafiklari

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

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

Nima ko'rsatdi: 2.2-bo'lim.

Misol 2 — Taqsimot va bog'lanish

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

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

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

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

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

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

Nima 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

python
sns.barplot(x=df["kat"], y=df["narx"])   # ishlaydi, lekin
sns.barplot(data=df, x="kat", y="narx")  # ✅ toza

2. Seaborn'ni Matplotlib o'rniga deb o'ylash

python
ax = sns.barplot(...)   # ax — Matplotlib obyekti
ax.set_title(...)       # ✅ Matplotlib bilan sozla

3. Grafikni yopmaslik

python
# ko'p grafik ochiq                       # ⚠️ xotira
plt.close("all")                          # ✅

4. barplot xom qiymat kutish

python
# barplot o'rtacha ko'rsatadi (xom emas)   # bilib ishla
# xom uchun: kategoriya bir qiymatli yoki boshqa grafik

5. corr matn ustun bilan

python
df.corr()   # matn ustun xato               # ⚠️
df.corr(numeric_only=True)                   # ✅

6. hue uchun ustun yo'q

python
sns.scatterplot(..., hue="yoq_ustun")   # KeyError  # ⚠️
# mavjud ustun nomi                                  # ✅

7. set_theme grafikdan keyin

python
sns.barplot(...); sns.set_theme(...)   # ta'sir qilmaydi  # ⚠️
sns.set_theme(...); sns.barplot(...)   # ✅ avval

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

  1. Statistik grafik — Seaborn (tez, chiroyli).

  2. DataFrame bilan (data=df, x=..., y=...).

  3. Uchinchi o'zgaruvchi — hue.

  4. Korrelyatsiya — heatmap + annot.

  5. set_theme — grafikdan oldin (global).

  6. Matplotlib bilan sozla (ax).

  7. corr(numeric_only=True).

  8. Grafikni yop (plt.close).


9. Amaliy topshiriq

Vazifa 1: Bashorat qiling

python
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
  1. Statistik vizualizatsiya (Matplotlib ustida)
  2. Matplotlib ustida (natija — ax)
  3. Har toifa o'rtachasi (avtomatik)
  4. Kvartil, taqsimot xulosasi
  5. Taqsimot (gistogramma)
  6. Bog'lanish (soch)
  7. Uchinchi o'zgaruvchi (rang)
  8. Soch + regressiya chizig'i
  9. Matritsa (korrelyatsiya) rang bilan
  10. Korrelyatsiya matritsasi
  11. Global uslub (mavzu)
  12. Seaborn yuqori daraja, Matplotlib past

Vazifa 2: Xatolarni tuzating

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

  1. barplot
  2. boxplot
  3. countplot
  4. Bezash

Vazifa 4: Taqsimot/bog'lanish

Grafik:

  1. histplot
  2. scatterplot
  3. hue
  4. regplot

Vazifa 5: Korrelyatsiya

Heatmap:

  1. corr
  2. heatmap
  3. annot
  4. Talqin

Vazifa 6: Hisobot

To'liq:

  1. set_theme
  2. barplot
  3. histplot
  4. heatmap

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

  1. Qatlamli abstraksiya (yuqori/past)
  2. Yuqori — qulaylik (Seaborn)
  3. Past — nazorat (Matplotlib)
  4. Ikkalasini bil (to'g'ri daraja)

6. Xulosa

  1. Seaborn — Matplotlib ustida (osonlashtiradi)
  2. Yuqori (qulay) / past (nazorat)
  3. Birga ishlaydi (ax)
  4. 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:

  1. 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 — Matplotlib ax (birga sozlash). Statistik grafik uchun tez va chiroyli.

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

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

Ulashish:Telegram'da

Izohlar (0)

Izoh yozish uchun kiring.

  • Hozircha izoh yo'q. Birinchi bo'ling!
24.14-dars: Seaborn — IlmHamroh