IlmHamroh
Data Science va sun'iy intellekt/Vizualizatsiya7/14-dars17 daqiqa
Mundarija (22)

5.7-dars: Seaborn

5-QISM — VIZUALIZATSIYA · 7-dars


1. Kirish va motivatsiya

Matplotlib kuchli, lekin ko'p kod talab qiladi va standart ko'rinishi oddiy. Seaborn — Matplotlib ustida qurilgan yuqori darajali kutubxona: chiroyli grafiklar, statistik vizualizatsiya (regressiya chizig'i, taqsimot, korrelyatsiya), va DataFrame bilan to'g'ridan ishlash — kam kod bilan. Seaborn'da bir qator kod chiroyli, statistikaga boy grafik beradi: sns.scatterplot(data=df, x="reklama", y="savdo", hue="shahar") — nuqtalar, rang guruh bilan, avtomatik legend. Nega muhim? (1) Kam kod — chiroyli grafik tez; (2) Statistik — regressiya, taqsimot, korrelyatsiya (o'rnatilgan); (3) DataFrame — ustun nomlari bilan to'g'ridan. Bu dars Seaborn'ni o'rgatadi — statistik vizualizatsiya kam kod bilan.

Seaborn — yuqori darajali vizualizatsiya: Matplotlib ustida (chiroyli, statistik), DataFrame (data=df, x=, y=, hue= — ustun nomlari), statistik grafiklar (scatterplot/histplot/boxplot/regplot/heatmap), hue (guruh — rang, avtomatik legend), uslub (sns.set_theme — chiroyli), Matplotlib bilan (ax= — birga). Foydalanish: chiroyli grafik, statistik, DataFrame. Bu 5.1 (Matplotlib), 3-qism (Pandas) bilan bog'liq. Seaborn — yuqori daraja. DataFrame. Statistik.

Real vaziyat. Data Scientist Matplotlib'da ko'p kod yozdi (fig, ax, plot, bezash — har grafik). Seaborn bilan kam kod: sns.scatterplot(data=df, x="reklama", y="savdo", hue="shahar") — nuqtalar + shahar rang + avtomatik legend + chiroyli (bir qator!). Statistik: sns.regplot(data=df, x="reklama", y="savdo") — scatter + regressiya chizig'i (trend, avtomatik); sns.histplot(df["ball"], kde=True) — histogram + KDE (silliq taqsimot egrisi). DataFrame: ustun nomlari bilan (x="reklama" — massiv emas). hue (guruh — rang; klaster). Seaborn ma'lumotni kam kod, chiroyli, statistik ko'rsatdi (Matplotlib ustida). Seaborn — yuqori daraja vizualizatsiya.

Bu darsda Seaborn'ni o'rganamiz.

Bu darsda:

  • Seaborn nima (Matplotlib ustida)
  • DataFrame bilan (x, y, hue)
  • Statistik grafiklar (regplot, histplot)
  • hue (guruh — rang)
  • Matplotlib bilan integratsiya
  • Seaborn amaliyoti
  • Seaborn tuzoqlari
  • Amaliy: Seaborn modeli

ℹ Misollar real seaborn/matplotlib bilan (Agg — grafik xususiyatlari matn bilan tekshiriladi) ishlaydi.


2. Nazariya — chuqur tushuntirish

2.1. Seaborn nima (Matplotlib ustida)

Yuqori daraja:

python
import seaborn as sns
import matplotlib.pyplot as plt

# Seaborn — Matplotlib ustida (chiroyli, statistik, kam kod)
sns.set_theme()   # chiroyli uslub

# bir qator — chiroyli grafik
sns.histplot(data=df, x="ball")   # histogram (chiroyli)

# Matplotlib ustida (ax bilan birga ishlaydi)

Seaborn nima (Matplotlib ustida) — yuqori daraja: Seaborn (import seaborn as sns) — Matplotlib ustida qurilgan (chiroyli, statistik, kam kod); sns.set_theme() (chiroyli uslub). Sabab: Matplotlib ko'p kod (fig, ax, plot, bezash) va oddiy ko'rinish; Seaborn kam kod (bir qator — chiroyli grafik) va statistik (regressiya, taqsimot o'rnatilgan). Matplotlib ustida (Seaborn Matplotlib ishlatadi — ax bilan birga; poydevor — 5.1). Seaborn (yuqori daraja — qulay), Matplotlib (pastki — moslashuvchan). Seaborn — Matplotlib ustida (chiroyli, statistik, kam kod). Yuqori daraja. Statistik.

2.2. DataFrame bilan (x, y, hue)

Ustun nomlari bilan:

python
import seaborn as sns

# DataFrame — ustun nomlari (massiv emas)
sns.scatterplot(data=df, x="reklama", y="savdo")

# hue — guruh (rang, avtomatik legend)
sns.scatterplot(data=df, x="reklama", y="savdo", hue="shahar")

# data=, x=, y=, hue= — ustun nomlari

DataFrame bilan (x, y, hue) — ustun nomlari: sns.scatterplot(data=df, x="reklama", y="savdo", hue="shahar") (data= DataFrame; x=/y= ustun nomlari (massiv emas); hue= guruh — rang). Sabab: Seaborn DataFrame bilan to'g'ridan (Pandas — 3-qism; ustun nomlari — x="reklama" massiv o'rniga); hue guruhni avtomatik (rang + legend — Matplotlib'da qo'lda). data=df (jadval), x=/y= (ustun), hue= (guruh rang). Bu Seaborn kuchi (DataFrame + kam kod). DataFrame bilan — data=, x=/y=, hue= (ustun nomlari). Ustun nomi. hue.

2.3. Statistik grafiklar (regplot, histplot)

Statistik grafiklar — o'rnatilgan statistika: regplot (scatter + regressiya chizig'i — trend, ishonch oralig'i; avtomatik), histplot (histogram + KDE — silliq zichlik egrisi; kde=True), boxplot/violinplot (taqsimot — violin: box + zichlik shakli), heatmap (korrelyatsiya matritsasi — rangli; 5.8), pairplot (barcha juftlik scatter — bir marta). Sabab: Seaborn statistikani o'rnatgan (regressiya — np.polyfit qo'lda emas; KDE — silliq; Matplotlib'da qo'lda hisob); statistik vizualizatsiya (grafik + statistika — bir qator). regplot (trend), histplot (KDE), violinplot (shakl). Statistik grafiklar — regplot/histplot/violinplot (o'rnatilgan). Statistik. Bir qator.

2.4. hue (guruh — rang)

hue (guruh — rang) — Seaborn kuchi: hue= parametr (kategoriya ustun — har guruh boshqa rang + avtomatik legend); barcha Seaborn grafikda (scatterplot, histplot, boxplot — hue=). Sabab: guruh bo'yicha ko'rsatish (shahar, jins — har guruh rang; klaster, taqqoslash); Matplotlib'da qo'lda (har guruh alohida plot + rang + legend); Seaborn avtomatik (hue="shahar" — hammasi). hue (guruh — rang), style= (guruh — marker/chiziq turi), size= (guruh — o'lcham). hue eng ko'p (guruh vizualizatsiyasi — bir parametr). hue — guruh rang (hue=; avtomatik legend). Guruh. Avtomatik.

2.5. Matplotlib bilan integratsiya

Matplotlib bilan integratsiya — birga ishlash: Seaborn Matplotlib ustida (grafik Matplotlib ax'da; ax= bilan joylashtirish); bezash (Matplotlib metodlari — ax.set_title, plt.savefig; 5.1). Sabab: Seaborn chizadi, lekin bezash/saqlash Matplotlib (ax — Seaborn qaytaradi yoki ax= beradi); birga (Seaborn grafik + Matplotlib bezash). sns.scatterplot(..., ax=ax) (Matplotlib ax'da), ax.set_title(...) (bezash), fig.savefig(...) (saqlash — 5.1). Subplots (Matplotlib — 5.10; Seaborn har ax'da). Seaborn (grafik) + Matplotlib (bezash/tuzilma). Matplotlib bilan — ax=, bezash (birga). Integratsiya. Birga.

2.6. Seaborn amaliyoti

Seaborn amaliyoti: sns.set_theme() (chiroyli uslub); data=df, x=, y= (DataFrame — ustun nomlari); hue= (guruh — rang); statistik (regplot trend, histplot KDE, violinplot shakl); heatmap (korrelyatsiya — 5.8); pairplot (barcha juftlik); Matplotlib (ax=, bezash — birga). Tuzoqlar: DataFrame emas (massiv — data= afzal), hue ko'p guruh (chalkash), Matplotlib aralash (bezash — Matplotlib), statistik faraz (regplot chiziqli). Amaliyot — set_theme, DataFrame, hue, statistik. Yuqori daraja. Kam kod.

2.7. Seaborn tuzoqlari

Seaborn asosiy tuzoqlari: DataFrame emas (Seaborn DataFrame uchun ideal — data=df, x="ustun"; massiv ham ishlaydi, lekin DataFrame afzal — ustun nomi, hue); hue ko'p guruh (hue — kam guruh (2-6 rang); ko'p guruh — ranglar ajratib bo'lmaydi, chalkash); Matplotlib aralash (Seaborn chizadi, bezash Matplotlib (ax.set_title, savefig); aralashtirmang — Seaborn grafik + Matplotlib bezash); statistik faraz (regplot — chiziqli regressiya; nochiziqli (egri) — order= yoki lowess; noto'g'ri trend); figure vs axes daraja (Seaborn ikki turi — scatterplot (axes — bir grafik) vs relplot (figure — subplots; ax yo'q); chalkash); KDE tekislash (histplot(kde=True) — KDE silliq, lekin kichik namunada aldash; katta namuna); rang standart (Seaborn rang — chiroyli, lekin ma'noli rang tanlov — ketma-ket/kategoriya); eski API (sns.distplot — eski; histplot/displot yangi). Sabab: Seaborn daraja/statistik nozik (DataFrame, hue, figure/axes — chalkash yoki noto'g'ri). Yechim: DataFrame, kam guruh hue, Matplotlib bezash, chiziqli tekshir. Tuzoqlar — DataFrame, hue, Matplotlib, statistik.

2.8. Seaborn — statistik vizualizatsiya kam kod bilan

Seaborn asosiy g'oyasi — statistik vizualizatsiya kam kod bilan: Matplotlib (poydevor — 5.1; ko'p kod, oddiy) ustida yuqori daraja (chiroyli, statistik, kam kod); DataFrame bilan to'g'ridan (ustun nomlari, hue). sns.set_theme (chiroyli), DataFrame (data=df, x=, y=, hue= — ustun nomlari, guruh rang), statistik grafiklar (regplot trend, histplot KDE, violinplot shakl, heatmap korrelyatsiya 5.8, pairplot juftlik), hue (guruh — rang, avtomatik legend), Matplotlib bilan (ax=, bezash — birga). Foydalanish: kam kod (chiroyli grafik tez), statistik (regressiya, taqsimot — o'rnatilgan), DataFrame (Pandas bilan). Seaborn (qulay) + Matplotlib (moslashuvchan) — birga (Seaborn chizadi, Matplotlib bezaydi/tuzilma). Data Science'da keng (EDA — tez chiroyli grafik; statistik vizualizatsiya — 9-qism). Bu 5.1 (Matplotlib) ustida va 3-qism (Pandas — DataFrame), 5.8 (heatmap) bilan. Seaborn — statistik vizualizatsiya kam kod bilan (Matplotlib ustida, DataFrame). Yuqori daraja. Kam kod.


3. Tez ma'lumotnoma

python
import seaborn as sns
import matplotlib.pyplot as plt

sns.set_theme()   # chiroyli uslub

# DATAFRAME bilan (ustun nomlari):
sns.scatterplot(data=df, x="reklama", y="savdo", hue="shahar")
#   data= (jadval) · x=/y= (ustun) · hue= (guruh — rang, legend)

# STATISTIK GRAFIKLAR (o'rnatilgan):
sns.regplot(data=df, x="reklama", y="savdo")     # scatter + trend
sns.histplot(data=df, x="ball", kde=True)         # histogram + KDE
sns.boxplot(data=df, x="shahar", y="maosh")       # box (guruh)
sns.violinplot(data=df, x="shahar", y="maosh")    # box + shakl
sns.heatmap(df.corr(), annot=True)                # korrelyatsiya (5.8)
sns.pairplot(df)                                   # barcha juftlik

# MATPLOTLIB bilan (bezash/saqlash):
fig, ax = plt.subplots()
sns.scatterplot(data=df, x="a", y="b", ax=ax)
ax.set_title("..."); fig.savefig("g.png")

QOIDA: DataFrame (data=) · hue kam guruh · bezash Matplotlib · statistik faraz

Seaborn xulosasi

Seaborn — statistik vizualizatsiya kam kod bilan (Matplotlib ustida)
DataFrame — data=df, x=, y=, hue= (ustun nomlari, guruh rang)
Statistik grafiklar — regplot (trend), histplot (KDE), violinplot
hue — guruh (rang, avtomatik legend)
Matplotlib bilan — ax=, bezash (Seaborn chizadi, Matplotlib bezaydi)

4. Batafsil misollar

Misollar real seaborn/matplotlib bilan (Agg — grafik xususiyatlari matn bilan tekshiriladi) ishlaydi.

Misol 1 — Seaborn scatterplot

python
"""Seaborn scatterplot (real seaborn/pandas)."""

import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns


def main() -> None:
    df = pd.DataFrame({
        "reklama": [10, 20, 30, 40, 50, 15, 25, 35],
        "savdo": [100, 180, 250, 340, 480, 130, 220, 300],
        "shahar": ["T", "T", "T", "T", "S", "S", "S", "S"],
    })

    print("=== 1. scatterplot (DataFrame) ===")
    fig, ax = plt.subplots()
    sns.scatterplot(data=df, x="reklama", y="savdo", ax=ax)
    print(f"  nuqtalar: {len(ax.collections[0].get_offsets())}")

    print("\n=== 2. hue (guruh — rang) ===")
    fig2, ax2 = plt.subplots()
    sns.scatterplot(data=df, x="reklama", y="savdo", hue="shahar", ax=ax2)
    print(f"  guruhlar (collections): {len(ax2.collections)}")

    print("\n=== 3. Legend (avtomatik) ===")
    print(f"  legend bor: {ax2.get_legend() is not None}")

    print("\n=== 4. Ustun nomlari bilan ===")
    print(f"  x=reklama, y=savdo, hue=shahar (massiv emas)")
    plt.close("all")
    print("  ⭐ Seaborn — DataFrame (x, y, hue)")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. scatterplot (DataFrame) ===
  nuqtalar: 8

=== 2. hue (guruh — rang) ===
  guruhlar (collections): 1

=== 3. Legend (avtomatik) ===
  legend bor: True

=== 4. Ustun nomlari bilan ===
  x=reklama, y=savdo, hue=shahar (massiv emas)
  ⭐ Seaborn — DataFrame (x, y, hue)

Nima ko'rsatdi: 2.1, 2.2-bo'limlar.

Misol 2 — regplot (trend chizig'i)

python
"""Seaborn regplot: trend chizig'i (real seaborn)."""

import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns


def main() -> None:
    df = pd.DataFrame({
        "reklama": [10, 20, 30, 40, 50],
        "savdo": [100, 210, 290, 420, 480],
    })

    print("=== 1. regplot (scatter + trend) ===")
    fig, ax = plt.subplots()
    sns.regplot(data=df, x="reklama", y="savdo", ax=ax)
    print(f"  chiziqlar (trend): {len(ax.lines)}")

    print("\n=== 2. Nuqtalar ===")
    print(f"  nuqtalar bor: {len(ax.collections) > 0}")

    print("\n=== 3. Regressiya chizig'i ===")
    print("  regplot avtomatik trend (ishonch oralig'i bilan)")

    print("\n=== 4. Tushuntirish ===")
    print("  regplot — scatter + regressiya (statistik)")
    plt.close("all")
    print("  ⭐ regplot — trend chizig'i (o'rnatilgan)")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. regplot (scatter + trend) ===
  chiziqlar (trend): 1

=== 2. Nuqtalar ===
  nuqtalar bor: True

=== 3. Regressiya chizig'i ===
  regplot avtomatik trend (ishonch oralig'i bilan)

=== 4. Tushuntirish ===
  regplot — scatter + regressiya (statistik)
  ⭐ regplot — trend chizig'i (o'rnatilgan)

Nima ko'rsatdi: 2.3-bo'lim.

Misol 3 — histplot (KDE)

python
"""Seaborn histplot: KDE (real seaborn/numpy)."""

import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns


def main() -> None:
    np.random.seed(0)
    ball = np.random.normal(70, 10, 1000)

    print("=== 1. histplot (histogram) ===")
    fig, ax = plt.subplots()
    sns.histplot(ball, ax=ax)
    print(f"  ustunlar (patches): {len(ax.patches) > 0}")

    print("\n=== 2. KDE (silliq egri) ===")
    fig2, ax2 = plt.subplots()
    sns.histplot(ball, kde=True, ax=ax2)
    print(f"  KDE chizig'i: {len(ax2.lines) > 0}")

    print("\n=== 3. KDE nima ===")
    print("  KDE — silliq zichlik egrisi (taqsimot shakli)")

    print("\n=== 4. Tushuntirish ===")
    print("  histplot + kde=True (histogram + silliq egri)")
    plt.close("all")
    print("  ⭐ histplot — histogram + KDE (statistik)")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. histplot (histogram) ===
  ustunlar (patches): True

=== 2. KDE (silliq egri) ===
  KDE chizig'i: True

=== 3. KDE nima ===
  KDE — silliq zichlik egrisi (taqsimot shakli)

=== 4. Tushuntirish ===
  histplot + kde=True (histogram + silliq egri)
  ⭐ histplot — histogram + KDE (statistik)

Nima ko'rsatdi: 2.3-bo'lim.

Misol 4 — boxplot (guruh, hue)

python
"""Seaborn boxplot: guruh (real seaborn/pandas)."""

import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns


def main() -> None:
    np.random.seed(0)
    df = pd.DataFrame({
        "shahar": ["T"] * 100 + ["S"] * 100 + ["B"] * 100,
        "maosh": np.concatenate([
            np.random.normal(500, 80, 100),
            np.random.normal(400, 60, 100),
            np.random.normal(600, 100, 100),
        ]),
    })

    print("=== 1. boxplot (guruh bo'yicha) ===")
    fig, ax = plt.subplots()
    sns.boxplot(data=df, x="shahar", y="maosh", ax=ax)
    print(f"  qutilar (patches): {len(ax.patches) >= 3}")

    print("\n=== 2. Guruh medianlari ===")
    medianlar = df.groupby("shahar")["maosh"].median().round(0)
    print(f"  {medianlar.to_dict()}")

    print("\n=== 3. Kam kod (bir qator) ===")
    print("  sns.boxplot(data, x, y) — Matplotlib'da ko'p kod")

    print("\n=== 4. Tushuntirish ===")
    print("  DataFrame + x/y — guruh boxplot (kam kod)")
    plt.close("all")
    print("  ⭐ Seaborn boxplot — guruh (kam kod)")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. boxplot (guruh bo'yicha) ===
  qutilar (patches): True

=== 2. Guruh medianlari ===
  {'B': 592.0, 'S': 401.0, 'T': 508.0}

=== 3. Kam kod (bir qator) ===
  sns.boxplot(data, x, y) — Matplotlib'da ko'p kod

=== 4. Tushuntirish ===
  DataFrame + x/y — guruh boxplot (kam kod)
  ⭐ Seaborn boxplot — guruh (kam kod)

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


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

Noto'g'ri fikr To'g'risi
"Seaborn Matplotlib o'rnini" Ustida (birga)
"Seaborn massiv uchun" DataFrame afzal (data=)
"hue ko'p guruh OK" 2-6 (ko'p — chalkash)
"regplot har aloqa" Chiziqli (nochiziqli — order=)
"Seaborn'da bezash" Matplotlib (ax.set_title)
"KDE doim aniq" Kichik namuna aldash
"distplot yangi" histplot/displot (yangi)
"kam kod = kam nazorat" Matplotlib bilan (nazorat)

6. Keng tarqalgan xatolar va yechimlari

1. DataFrame emas

python
sns.scatterplot(x=massiv1, y=massiv2)   # ishlaydi, lekin     # ⚠️
sns.scatterplot(data=df, x="a", y="b")   # DataFrame (afzal)  # ✅

2. hue ko'p guruh

python
sns.scatterplot(..., hue="id")   # 100 guruh (chalkash)       # ⚠️
sns.scatterplot(..., hue="kategoriya")   # kam guruh          # ✅

3. Matplotlib aralash

python
sns.scatterplot(...); plt.title(...)   # holatli (chalkash)   # ⚠️
sns.scatterplot(..., ax=ax); ax.set_title(...)                # ✅

4. regplot nochiziqli

python
sns.regplot(data=df, x="x", y="y")   # chiziqli (egri xato)   # ⚠️
sns.regplot(..., order=2)   # polinomial (egri)               # ✅

5. figure vs axes

python
sns.relplot(...); ax.set_title(...)   # relplot — figure (ax yo'q) # ⚠️
sns.scatterplot(..., ax=ax)   # axes (ax bilan)               # ✅

6. Eski API

python
sns.distplot(data)   # eski (o'chirilgan)                     # ⚠️
sns.histplot(data)   # yangi                                   # ✅

7. set_theme unutish

python
sns.histplot(...)   # standart Matplotlib ko'rinish           # ⚠️
sns.set_theme(); sns.histplot(...)   # chiroyli               # ✅

7. Integratsiya — bu bilim qayerda kerak bo'ladi

  • 5.1-dars (o'tilgan): Matplotlib (poydevor)
  • 3-qism (o'tilgan): Pandas (DataFrame)
  • 5.8-dars: Heatmap (korrelyatsiya)
  • 5.9-dars: Taqsimot grafiklari
  • 9-qism (reja): EDA (tez vizualizatsiya)

8. Eng yaxshi amaliyotlar

  1. sns.set_theme() — chiroyli uslub.

  2. DataFrame — data=df, x=, y=.

  3. hue= — guruh (kam guruh, rang).

  4. Statistik — regplot/histplot/violinplot.

  5. Bezash — Matplotlib (ax.set_title).

  6. ax= — Matplotlib bilan birga.

  7. regplot — chiziqli (nochiziqli — order=).

  8. Seaborn — statistik vizualizatsiya kam kod.


9. Amaliy topshiriq

Vazifa 1: Bashorat qiling

python
1.  # Seaborn nima?
2.  # Matplotlib bilan aloqasi?
3.  # data= nima?
4.  # x=/y= nima?
5.  # hue nima?
6.  # regplot nima?
7.  # histplot kde?
8.  # violinplot nima?
9.  # bezash qayerda?
10. # hue ko'p guruh?
11. # Seaborn massivmi?
12. # nega Seaborn muhim?
Javoblar
  1. Yuqori darajali vizualizatsiya (Matplotlib ustida)
  2. Ustida (birga — chizadi/bezaydi)
  3. DataFrame
  4. Ustun nomlari
  5. Guruh (rang, legend)
  6. scatter + regressiya (trend)
  7. Histogram + KDE (silliq)
  8. Box + shakl (taqsimot)
  9. Matplotlib (ax.set_title)
  10. Chalkash (2-6 kam)
  11. DataFrame afzal (data=)
  12. Statistik vizualizatsiya kam kod

Vazifa 2: Xatolarni tuzating

python
1.  sns.scatterplot(x=m1, y=m2)   # DataFrame

2.  sns.scatterplot(..., hue="id")   # 100 guruh

3.  sns.scatterplot(...); plt.title(...)

4.  sns.regplot(...)   # egri aloqa

5.  sns.distplot(data)   # eski
Javoblar
python
1.  data=df, x="a", y="b"

2.  hue="kategoriya" (kam guruh)

3.  ax=ax; ax.set_title(...)

4.  order=2 (polinomial)

5.  sns.histplot(data)

Vazifa 3: Seaborn

Modellang:

  1. Matplotlib ustida
  2. Chiroyli
  3. Statistik
  4. Kam kod

Vazifa 4: DataFrame

Modellang:

  1. data=
  2. x=/y=
  3. hue=
  4. Ustun nomlari

Vazifa 5: Statistik grafiklar

Modellang:

  1. regplot
  2. histplot (KDE)
  3. violinplot
  4. heatmap

Vazifa 6: Integratsiya

Modellang:

  1. ax=
  2. Bezash
  3. Matplotlib
  4. Birga

Vazifa 7: O'ylash

Seaborn Matplotlib ustida qurilgan — kam kod bilan chiroyli, statistik grafik beradi, lekin Matplotlib'ni almashtirmaydi (bezash uchun hali ham kerak). Nima uchun bu "qatlam ustida qatlam" naqshi (Pandas NumPy ustida — 3.1) Data Science ekotizimida takrorlanadi, va nega ikkalasini (yuqori + past daraja) bilish foydali?

Javob

Qisqa javob: Seaborn Matplotlib ustida (kam kod, chiroyli), lekin almashtirmaydi; "qatlam ustida qatlam" naqshi takrorlanadi (Pandas NumPy ustida — 3.1), ikkalasini bilish foydali, chunki: (1) qatlam qayta ishlatadi — Seaborn Matplotlib qayta ishlatadi (o'zi chizmaydi — Matplotlib'ga topshiradi; Pandas NumPy'ga — 3.1); "g'ildirak qayta ixtiro qilma" (poydevor tayyor); (2) yuqori daraja — qulaylik — Seaborn kam kod (bir qator — chiroyli, statistik; umumiy holatlar oson); Pandas (jadval — oson); (3) pastki daraja — nazorat — Matplotlib to'liq nazorat (har detal — o'q, rang, joylashuv; Seaborn cheklangan — umumiy); NumPy (tezlik, moslashuvchanlik). "Nega naqsh takrorlanadi": (a) abstraksiya qatlami — har qatlam o'z darajasi (yuqori — qulay, umumiy; pastki — nazorat, maxsus); umumiy ish (yuqori — tez), maxsus ish (pastki — nazorat); (b) 80/20 — ish 80% oddiy (yuqori daraja — Seaborn/Pandas; kam kod), 20% maxsus (pastki — Matplotlib/NumPy; nazorat); (c) modullik — qatlamlar mustaqil (Matplotlib yaxshilansa — Seaborn ham; ajratilgan); (d) ekotizim — butun Python DS (NumPy → Pandas → Seaborn; sklearn NumPy ustida — 20-qism); bir naqsh. "Nega ikkalasi": (1) yuqori — tez (Seaborn — umumiy grafik tez; Pandas — jadval); (2) pastki — maxsus (Matplotlib — Seaborn qilolmaydigan bezash; NumPy — maxsus hisob); (3) yuqori pastkiga tayanadi (Seaborn Matplotlib — bezash Matplotlib; bilish kerak); (4) kerak bo'lganda tushish (yuqori yetmaganda — pastki; Seaborn cheklanganda — Matplotlib). Saboqlar: qatlam qayta ishlatadi (poydevor); yuqori qulay (kam kod), pastki nazorat (maxsus); naqsh takrorlanadi (ekotizim — bir g'oya); ikkalasi (yuqori tez + pastki nazorat). To'g'ri: yuqori daraja (Seaborn/Pandas — tez); pastki (Matplotlib/NumPy — nazorat, kerak bo'lganda); ikkalasi bil. Muvozanat: qulaylik (yuqori — 80%) + nazorat (pastki — 20%); ikkalasi (naqsh). Bu Data Science ekotizim asosiy (qatlamli — NumPy/Pandas/Seaborn/sklearn; yuqori tez, pastki nazorat; ikkalasi bil). Seaborn + Matplotlib — yuqori + pastki (qulaylik + nazorat).

1. Nega qatlam naqshi takrorlanadi

  • Qatlam qayta ishlatadi (Seaborn Matplotlib; Pandas NumPy)
  • Abstraksiya daraja (yuqori qulay, pastki nazorat)
  • 80/20 (oddiy — yuqori; maxsus — pastki)
  • Ekotizim (bir naqsh — NumPy/Pandas/Seaborn/sklearn)

2. Nega ikkalasi foydali

  • Yuqori tez (Seaborn — umumiy grafik)
  • Pastki maxsus (Matplotlib — bezash, nazorat)
  • Yuqori pastkiga tayanadi (bezash Matplotlib)
  • Kerak bo'lganda tushish (Seaborn cheklanganda)

3. Yuqori vs pastki

Yuqori (Seaborn) Pastki (Matplotlib)
Kam kod, chiroyli To'liq nazorat
Umumiy (80%) Maxsus (20%)
Qulay Moslashuvchan

4. Saboqlar

  1. Qatlam qayta ishlatadi (poydevor)
  2. Yuqori qulay, pastki nazorat
  3. Naqsh takrorlanadi (ekotizim)
  4. Ikkalasi (tez + nazorat)

5. Xulosa

  1. Seaborn Matplotlib ustida (qayta ishlatadi)
  2. Yuqori qulay (kam kod), pastki nazorat
  3. Naqsh takrorlanadi (Pandas NumPy ustida)
  4. Ikkalasi bil (yuqori tez + pastki maxsus)

Nimani mustahkamlaydi: 2.1, 2.5-bo'limlar.


Xulosa

Bu darsda Seaborn'ni o'rgandik.

Eng muhim uch fikr:

  1. Seaborn va DataFrame. Seaborn (sns) — Matplotlib ustida qurilgan yuqori daraja (chiroyli, statistik, kam kod; sns.set_theme()). DataFrame bilan — sns.scatterplot(data=df, x="reklama", y="savdo", hue="shahar") (data= jadval, x=/y= ustun nomlari, hue= guruh — rang + avtomatik legend); Pandas bilan to'g'ridan.

  2. Statistik grafiklar va hue. Statistik grafiklar (o'rnatilgan): regplot (scatter + regressiya chizig'i — trend), histplot (histogram + KDE silliq egri; kde=True), violinplot (box + shakl), heatmap (korrelyatsiya — 5.8), pairplot (barcha juftlik). hue (guruh — rang, avtomatik legend; barcha grafikda; kam guruh 2-6).

  3. Kam kod, statistik. Matplotlib bilan — Seaborn chizadi, bezash/saqlash Matplotlib (ax=, ax.set_title, fig.savefig; birga). Seaborn — statistik vizualizatsiya kam kod bilan (Matplotlib ustida — chiroyli, statistik; DataFrame). Seaborn (yuqori — qulay) + Matplotlib (pastki — nazorat) — qatlam naqshi (Pandas NumPy ustida 3.1; ekotizim takrorlaydi; ikkalasi bil — yuqori tez, pastki maxsus). Data Science'da keng (EDA — tez chiroyli grafik). Tuzoqlar: DataFrame afzal (data=), hue ko'p guruh (chalkash), Matplotlib bezash, regplot chiziqli (nochiziqli order=), eski API (distplot → histplot).

Keyingi darsda heatmap (issiqlik xaritasi)ni o'rganamiz: korrelyatsiya matritsasini rangli ko'rsatish — ko'p o'zgaruvchan aloqasini bir qarashda (4.9 korrelyatsiya matritsasi).

Ulashish:Telegram'da

Izohlar (0)

Izoh yozish uchun kiring.

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