Seaborn gotchas va intervyu
Bu bob II qismni xuddi 13-bob I qismni yopgani kabi yakunlaydi: bu yerda hech qanday yangi mavzu kiritilmaydi. Bu yerdagi hamma narsa 14–22-boblarning sintaksis unutilgandan keyin ham qoladigan to'rtta narsaga siqilgan ko'rinishi — jimgina noto'g'ri chart ishlab chiqaradigan xatolar, umuman chart tanlash tartibi, xabar beradigan chart bilan chalg'itadigan chart o'rtasidagi farq va takrorlash uchun savollar banki.
Tartib muhim. sns.histplot() ning har bir argumentini nomlab bera oladigan, lekin lineplot dagi soyalangan band nimani anglatishini ayta olmaydigan talaba kutubxonani o'rgangan, fanni esa o'tkazib yuborgan. Quyidagi gotcha katalogi aynan shu sababdan zarar darajasi bo'yicha tartiblangan: yuqoridagi qatorlar mutlaqo normal ko'rinadigan, ammo yolg'on gapiradigan chart lar hosil qiladi.
23.1 Gotcha katalogi
Yigirma oltita nosozlik, keltiradigan zarari bo'yicha tartiblangan. Bu yerda "zarar" ikki narsaning ko'paytmasi: xato kimdir asoslanib ish tutadigan figure gacha yetib borish ehtimoli va natijadagi xulosaning qanchalik noto'g'riligi. Crash — zarari kam, chunki u sizni to'xtatadi. Chiroyli chizilib, ishorani teskarisiga o'girib yuboradigan plot esa eng yomon holat.
1-dan 8-gacha bo'lgan qatorlar xulosani o'zgartiradiganlari. 9-dan 18-gacha bo'lganlari kod hisoblagan natijani o'zgartirmasdan o'quvchini chalg'itadi. 19-dan 26-gacha bo'lganlari ishqalanish: error lar, bo'sh fayllar, deprecation lar va o'qib bo'lmaydigan output. Bob ustuni mexanizm to'liq tushuntirilgan bobga ishora qiladi.
| # | Gotcha | Aslida nima sodir bo'ladi | Yechim | Bob |
|---|---|---|---|---|
| 1 | barplot count yoki jami sifatida o'qiladi |
Bar balandligi — category ichidagi y ning o'rtachasi, tepasidagi qalpoqcha esa shu o'rtachaning bootstrap qilingan 95% CI si. Shu tarzda chizilgan "Sales by region" har bir transaction ga to'g'ri keladigan o'rtacha savdoni ko'rsatadi; ranking esa jami savdoning aynan teskarisi bo'lishi mumkin. |
Row count lar uchun countplot, jami uchun barplot(estimator="sum"). Statistikani doim y-label ga yozing: plt.ylabel("mean total bill"). |
17 |
| 2 | lineplot jimgina aggregate qiladi, band esa ma'lumot deb o'qiladi |
x takrorlanganda chiziq har bir y dan o'tolmaydi, shuning uchun seaborn har bir noyob x uchun estimator="mean" ni bootstrap CI ribbon bilan chizadi. Talabalar o'n ikkita o'rtacha va o'n ikkita interval ni "ma'lumot" deb ta'riflaydi. |
Avval df["x"].duplicated().any() ni tekshiring. Keyin estimator=None, har bir series uchun hue, chinakam noyob x ishlating yoki caption da aggregation ni aytib o'ting. |
15 |
| 3 | Regression band prediction interval deb o'qiladi | regplot/lmplot chizig'i atrofidagi ribbon — har bir x da y ning o'rtachasi uchun CI. Kuzatuvlarning taxminan yarmi undan tashqarida qoladi va bu kutilgan hol. Uning kengligi fitted forma noto'g'ri bo'lganda ham 1/√n kabi qisqaradi. |
"Chiziq uchun confidence interval" deb ovoz chiqarib ayting. Haqiqiy prediction interval kerak bo'lsa seaborn dan chiqing: statsmodels da model.get_prediction(X).summary_frame() obs_ci_* beradi. |
19 |
| 4 | Missing value lar bir og'iz so'zsiz tashlanadi | Har bir seaborn funksiyasi map qilingan o'zgaruvchi NaN bo'lgan row larni olib tashlaydi. titanic["age"] 891 yo'lovchidan 177 tasida yo'q; penguins["sex"] esa 11 tasida. Bir facet 30 ta row ga, yonidagisi 300 ta row ga fit qilingan bo'lishi mumkin va vizual farq bo'lmaydi. |
Har safar plot dan oldin df.isna().sum(). Har bir guruh uchun n ni legend da yoki har bir facet ustidagi annotation da ko'rsating hamda row larni ochiq tashlang, toki count kod da ko'rinib tursin. |
15–20 |
| 5 | Bin soni hikoyani hal qiladi | Penguin flipper uzunligi bins=3 da unimodal, bins=12 da aniq bimodal, bins=120 da esa panjaraga o'xshaydi — bir xil 344 ta row. Standart bins="auto" silliq unimodal density ni taxmin qiladigan formula, ya'ni aynan plot eng kerak bo'lgan paytda buziladigan taxmin. |
Standartda, uning yarmida va ikki barobarida chizing; faqat uchalasida ham saqlanib qolgan xususiyatlarni qabul qiling. binwidth= ni afzal ko'ring (u tushunarli va facet lar bo'ylab barqaror) va uni caption da yozing. Hech qanday sozlash parametri bo'lmagan ECDF bilan solishtirib tekshiring. |
16 |
| 6 | KDE bandwidth haqiqiy mode ni yo'q qilib silliqlaydi | Scott qoidasi bitta Gaussian uchun optimal. Ikkita ustma-ust tushgan Gaussian da u har ikkala mode dan kengroq bandwidth tanlaydi va bitta ishonchli do'nglik qaytaradi. Standart KDE sizga chinakam bimodal ma'lumot haqida "unimodal" deb xabar berishga imkon beradi. | "Unimodal" so'zini yozishdan oldin doim bw_adjust=0.5 bilan va histogram ga qarshi qayta chizing. Violin ham xuddi shu muammoni meros qilib oladi, chunki u aynan ko'zgu qilingan KDE. |
16, 17 |
| 7 | Boxplot ikkinchi cho'qqini butunlay yashiradi | 20 va 80 atrofida to'plangan qiymatlar median ni 50 qilib, oddiy ko'rinadigan kvartillar beradi — holbuki birorta ham kuzatuv median atrofida emas. Uniform, bimodal, normal va qiyshiq namunalarni bir xil besh sonli xulosaga ega bo'ladigan qilib qurish mumkin. | Notanish o'zgaruvchining distribution ini boshqa yo'l bilan ko'rmasdan turib uning boxplot ini hech qachon taqdim etmang: violin, strip overlay yoki histogram. Bir xil axes da boxplot(showfliers=False) ustiga stripplot — standart kombinatsiya. |
17 |
| 8 | df.corr() raqamli bo'lmagan column larda xato beradi yoki chalg'itadi |
pandas 2.0 standartni numeric_only=False ga o'zgartirdi, shuning uchun penguins.corr() endi ValueError: could not convert string to float: 'Adelie' chiqaradi. pandas 1.x bunday column larni jimgina tashlab yuborardi. Xuddi shu o'zgarish mean, sum va median ga ham tegdi. |
df.corr(numeric_only=True) yoki o'zini yaxshiroq izohlaydigan df.select_dtypes("number").corr(). Tartibsiz category ni majburan kiritish uchun hech qachon label-encode qilmang — natijadagi r alifbo tartibiga bog'liq bo'lib qoladi. |
18 |
| 9 | center=0 siz diverging colormap |
Neytral rang ma'lumotning o'rta diapazoni qayerga tushsa o'sha yerga tushadi. −0.1 dan +0.9 gacha bo'lgan correlation lar da oq rang +0.4 ga tushadi, natijada chinakam musbat 0.2 "manfiy" ko'k diapazonda chiziladi. Chart o'zida yozilgan raqamlarga zid keladi. | Doim center=0, correlation lar uchun esa qo'shimcha vmin=-1, vmax=1. To'liq retsept: annot=True, fmt=".2f", cmap="coolwarm", center=0, vmin=-1, vmax=1, square=True. |
18, 21 |
| 10 | Tartibsiz category larda sequential palette | viridis bilan ranglangan uchta species Gentoo ni shkalaning yorqin cho'qqisiga, Adelie ni esa qorong'i tubiga qo'yadi. O'quvchi mavjud bo'lmagan ranking ni tasavvur qiladi, qorong'i category ni esa jismonan ko'rish qiyinroq. Teskari xato — daromad decile larida qualitative palette — mavjud bo'lgan tartibni yo'q qiladi. |
Tartibsiz → qualitative (colorblind, deep, Set2). Pastdan→yuqoriga → sequential (viridis, rocket, crest). Ma'noli o'rta nuqta → center= bilan diverging. Har bir palette= dan oldin bu qanday o'zgaruvchi ekanini so'rang. |
21 |
| 11 | swarmplot katta ma'lumotda nuqtalarni jimgina tashlaydi |
Har bir category ga taxminan 500–1000 row dan oshgach layout algoritmi gorizontal joydan qolib UserWarning: X% of the points cannot be placed chiqaradi. O'sha nuqtalar ko'chiriladi yoki yashiriladi, ya'ni chart endi ma'lumotni ifodalamaydi — warning esa o'qilmasdan o'tib ketadi. |
Bu warning ni build xatosi deb qabul qiling. stripplot(jitter=True, alpha=0.4) ga, violin ga o'ting yoki tasodifiy sample chizing. Uni chiqargan chart ni hech qachon chiqarmang. |
17 |
| 12 | Teng bo'lmagan guruhlarda xom count lar solishtiriladi | 152 ta Adelie, 124 ta Gentoo va 68 ta Chinstrap bo'lganda Chinstrap egri chizig'i hamma joyda past bo'ladi va buning flipper uzunligiga hech qanday aloqasi yo'q. O'quvchi sampling haqidagi faktdan penguin lar haqida xulosa chiqaradi. | stat="density" va common_norm=False — ikkala qism ham. Yolg'iz stat="density" baribir barcha guruhlarni birgalikda normalizatsiya qiladi. common_bins=True ni saqlang va n qiymatlarini chiqaring. |
16 |
| 13 | Tartibli category lar uchun alifbo tartibi | "Fri, Sat, Sun, Thur"; "High, Low, Medium"; "eight, five, four, nine, one". Object dtype li column lar hech qanday tartib olib yurmaydi, shuning uchun o'q ma'nosiz o'qiladi va o'quvchi ko'rgan har qanday trend alifboning artefakti bo'ladi. | Har bir chaqiruvda order=["Thur","Fri","Sat","Sun"], yoki doimiy ravishda pd.Categorical(col, categories=..., ordered=True), shunda groupby, pivot va har bir plot uni meros qilib oladi. E'tibor bering, order= tushirib qoldirilgan level larni filtrlab ham tashlaydi. |
17 |
| 14 | Uch yoki undan ko'p hue guruhi bilan multiple="layer" |
Standart holat. Yarim shaffof bar lar ustma-ust tushib legend da umuman uchramaydigan ranglarga aylanadi, oldingi guruhning ko'rinadigan balandligi esa uning count i emas. | Konturlar uchun element="step", fill=False, kam bin da aniq balandliklar uchun multiple="dodge", uchta guruhdan oshsangiz esa col= facet lari. |
16 |
| 15 | pointplot chiziqlari tartibsiz category lar orasida trend borligini uqtiradi |
"Cherbourg" dan "Queenstown" ga tortilgan chiziq ular orasida nimadir bor degan taassurot qoldiradi. O'quvchi x o'qi tartiblangan yoki yo'qligidan qat'i nazar qiyalikni ko'radi. | Pointplot ni faqat chinakam tartibli x uchun ishlating (day, class, dose, yosh guruhi). Aks holda interval li yalang'och nuqtalar uchun linestyle="none" — e'tibor bering, bu v0.13 da join=False o'rnini egalladi. |
17 |
| 16 | Avtomatik masshtablangan heatmap lar yonma-yon solishtiriladi | A chart −0.2 dan 0.4 gacha, B chart esa −0.9 dan 0.95 gacha cho'ziladi, lekin ikkalasi ham bir xil eng to'q qizil va eng to'q ko'kni ishlatadi. Birga qo'yilganda ular bir xil kuchli ko'rinadi. | Bir xil kattalikning har bir chart ida vmin va vmax ni bir xil qiymatlarga mahkamlang. Agar robust=True ishlatsangiz, buni caption da ayting — u ekstremal qiymatlarni yashiradi. |
18 |
| 17 | KDE ma'lumot chegarasidan tashqarida density o'ylab topadi | Gaussian kernel cheksiz support ga ega va cut=3 eng chekka kuzatuvdan uch bandwidth narigacha chizadi, shuning uchun "tip amount" uchun density egri chizig'i nolni kesib manfiy pulga o'tadi. Estimator haqiqiy chegarada ham siljigan bo'lib, unga yaqin qiymatlar sonini kamaytirib ko'rsatadi. |
Ma'lumotda to'xtash uchun cut=0, fizik chegarani bildirish uchun clip=(0, None), musbat qiyshiq o'zgaruvchilar uchun esa log_scale=True. Violin lar standart holda cut=2 ishlatadi va xuddi shunday muomalaga muhtoj. |
16, 17 |
| 18 | pairplot raqamli bo'lmagan column lar va NaN row larni jimgina tashlaydi |
12 column li DataFrame 5×5 grid berayotgan bo'lsa, demak yettita column raqamli emas — ba'zan chindan ham categorical, ba'zan esa adashib qolgan "N/A" yoki minglik ajratgichi tufayli object sifatida o'qilgan raqamlar. NaN li row lar tegishli kataklardan yo'qoladi. |
Avval print(df.dtypes) va df.isna().sum(); raqamli bo'lishi kerak bo'lgan column lar uchun pd.to_numeric(..., errors="coerce"). vars= bilan cheklang — panel lar k² kabi o'sadi, ya'ni 20 column 400 ta panel demakdir. |
20 |
| 19 | Figure-level plot da plt.title() |
plt.title() joriy axes ga ta'sir qiladi, bu esa relplot/displot/catplot/lmplot dan keyin oxirgi chizilgan facet bo'ladi. Figure sarlavhangiz o'ng pastdagi bitta kichkina panel ga tushadi. plt.xlabel, plt.xlim, plt.savefig uchun ham shunday. |
Qaytarilgan grid orqali ishlang: g.figure.suptitle("...", y=1.02), g.set_axis_labels(), g.set_titles("{col_name}"), g.set(xlim=...), g.savefig(), so'ng g.tight_layout(). Deprecated g.fig emas, g.figure ni ishlating. |
15–20 |
| 20 | Figure-level funksiyalar figsize ni e'tiborsiz qoldiradi |
relplot dan oldin yozilgan plt.figure(figsize=(14, 6)) hech nima qilmaydi: funksiya o'z figure ini quradi va siznikini yetim qoldiradi — shu sababli notebook da ko'pincha ortiqcha bo'sh figure paydo bo'ladi. |
Facet ni o'lchang: height= dyuymdagi balandlik, kenglik = height * aspect, umumiy kenglik ≈ column lar soni × shu qiymat. Keyinchalik aniq dyuym uchun: g.figure.set_size_inches(12, 5). |
20, 21 |
| 21 | lmplot (va har bir figure-level funksiya) ax= ni qabul qilmaydi |
TypeError: lmplot() got an unexpected keyword argument 'ax'. Figure-level funksiyalar dizayni bo'yicha o'z figure iga egalik qiladi, shuning uchun ularni siz qurgan layout ga joylashtirib bo'lmaydi. relplot, displot, catplot, jointplot, pairplot, clustermap uchun ham shunday. |
Axes-level juftini ishlating: regplot, scatterplot, histplot, boxplot, heatmap — barchasi ax= oladi. Layout ni yozishdan oldin qaysi oilaga muhtojligingizni hal qiling, chunki ularni oxirgi daqiqada almashtirib bo'lmaydi. |
19, 20 |
| 22 | plt.show() dan keyingi plt.savefig() bo'sh fayl yozadi |
Ko'pchilik backend larda show() chizadi va so'ng joriy figure ni tozalaydi, shuning uchun keyingi savefig() bo'sh kanvasni saqlaydi — hech qanday xato xabarisiz. |
Avval saqlang, keyin ko'rsating. Yaxshirog'i: handle saqlang (fig, ax = plt.subplots()) va o'sha figure ga bog'langan fig.savefig(...) ni chaqiring. Kanonik chaqiruv: plt.savefig("f.png", dpi=300, bbox_inches="tight"). |
21 |
| 23 | Long kerak bo'lgan joyda wide ma'lumot (va matrix kerak bo'lgan joyda long) | x/y siz wide DataFrame uzatish seaborn ni har bir column ni index ga qarshi chizishga majbur qiladi — qulay, lekin long forma nazarda tutilgan bo'lsa, ma'nosiz. Teskari tomonda esa sns.heatmap(data=flights, x="year", y="month") TypeError chiqaradi: matrix funksiyalarida x, y yoki hue yo'q. |
heatmap/clustermap dan tashqari hamma narsa uchun long forma: har bir kuzatuvga bitta row, har bir o'zgaruvchiga bitta column. Matrix formaga pivot (katakka bitta qiymat), pivot_table(aggfunc=) (ko'p qiymat), crosstab (ikkita categorical) yoki corr orqali o'ting. df.melt() ortga qaytaradi. |
15, 18 |
| 24 | ci= o'rniga errorbar= keldi |
v0.12 da deprecated bo'ldi va o'shandan beri categorical hamda relational funksiyalardan olib tashlandi. Eski ci=95 endi errorbar=("ci", 95), ci="sd" endi errorbar="sd", ci=None endi errorbar=None. 2022 dan oldin yozilgan har qanday darslik o'lik API ni o'rgatadi. (regplot/lmplot istisno — ular hamon ci= oladi.) |
errorbar= ni ishlating va caption da qaysi biri ekanini ayting. Bog'liq nom o'zgarishlari: join=False→linestyle="none", violin larda scale=→density_norm=, g.fig→g.figure, yalang'och palette= endi mos hue= hamda legend=False talab qiladi. |
15, 17 |
| 25 | distplot deprecated |
0.11 da deprecated bo'ldi; u 0.13 da hamon warning bilan ishlaydi va olib tashlanadi. U histogram, KDE va rug ni bitta funksiyaga jamlagan edi, uning standart qiymatlari esa y o'qining ma'nosini jimgina o'zgartirardi — KDE ni yoqish count larni density ga aylantirardi. | Axes-level: histplot, kdeplot, ecdfplot, rugplot. Figure-level: displot(kind=...). sns.distplot(x) ning so'zma-so'z tarjimasi — sns.histplot(x, kde=True, stat="density"). |
16 |
| 26 | sns.load_dataset() ga internet kerak |
U GitHub dagi mwaskom/seaborn-data repository sidan CSV yuklab oladi. Imtihon zalida, yopiq laboratoriyada yoki proxy ortida u URLError chiqaradi yoki vaqt tugaydi, butun sinf esa birinchi katakda qotib qoladi. |
Internet borida bir marta cache lang (to_csv, keyin pd.read_csv) yoki repository ni clone qilib data_home= uzating. load_dataset qo'shadigan tuzatishlarni tiklang — ayniqsa flights["month"] uchun tartibli categorical ni. Seaborn birinchi muvaffaqiyatli chaqiruvdan keyin ~/seaborn-data da ham cache lab qo'yadi. |
15–21 |
Ularning har biri nimadir hisoblaydigan va keyin faqat natijani chizadigan funksiya. Bar — o'rtacha; chiziq — o'rtacha; band — bootstrap; box — beshta kvantil; violin va KDE — sozlash parametri bor smoother lar; correlation — chiziqli xulosa. Ularning birortasi ham nimani tashlab yuborganini aytmaydi. II qism aylanib yurgan yagona g'oya shu: seaborn plot i — rasm kiygan statistika, qaysi statistika ekanini bilish esa sizning zimmangizda.
Uchishdan oldingi tekshiruv
Muhim har qanday figure dan oldin ishga tushiriladigan to'rt qator. Ular 4, 8, 13, 18 va 23-qatorlarni to'g'ridan-to'g'ri ushlaydi hamda 2 va 12-qatorlarni sezish imkonini beradi.
print(df.shape, df.dtypes.value_counts().to_dict()) # shape va dtype aralashmasi print(df.isna().sum().loc[lambda s: s > 0]) # qaysi column lar row yo'qotadi print(df[cat_col].value_counts()) # guruh o'lchamlari va ularning tartibi print(df[x_col].duplicated().any()) # lineplot aggregate qiladimi?
23.2 To'g'ri plot ni tanlash
Talabalar avval chart turini oladi, keyin unga mos savol qidiradi. Buni teskarisiga qiling. Quyidagi tartib — qat'iy ketma-ketlikda beriladigan to'rtta savol va u har safar kichik nomzodlar to'plami bilan yakunlanadi.
1-qadam — Savol nima, bir jumlada?
Uni plotting kutubxonasini ochishdan oldin yozib qo'ying. Jumla undan keyingi hamma narsani belgilaydi, noaniq jumlalar esa noaniq chart lar hosil qiladi.
| Savol shakli | Misol | Oila |
|---|---|---|
| Bu o'zgaruvchi qanday tarqalgan? | "Flipper uzunliklari qanday ko'rinadi?" | Distribution (16-bob) |
| Bu raqam guruhlar bo'yicha farq qiladimi? | "Chekuvchilar boshqacha tip beradimi?" | Categorical (17-bob) |
| Ikkita raqam qanday birga harakatlanadi? | "Hisob oshgani sari tip ham oshadimi?" | Relational / regression (15, 19-boblar) |
| Har bir guruhda nechta bor? | "Har bir class da nechta yo'lovchi bor?" | countplot (17-bob) |
| Bu vaqt o'tishi bilan qanday o'zgaradi? | "Yo'lovchilar soni o'syaptimi?" | lineplot (15-bob) |
| Ko'plab o'zgaruvchilardan qaysilari bir-biriga bog'liq? | "Nimani model qilishim kerak?" | Matrix / grid lar (18, 20-boblar) |
| Ikkita categorical qanday o'zaro ta'sir qiladi? | "Qaysi class qayerdan kemaga chiqqan?" | crosstab + heatmap (18-bob) |
2-qadam — Bu jumlada nechta o'zgaruvchi bor?
Nomlagan o'zgaruvchilaringizni sanang, guruhlash o'zgaruvchisini ham qo'shib. Bitta o'zgaruvchi — distribution. Ikkitasi — solishtirish yoki bog'liqlik. Uchtasi bo'lsa, ulardan biri uchinchi kanalga o'tishi kerak — o'qilishi bo'yicha avval hue, keyin style, so'ng size. To'rtta yoki undan ko'p bo'lsa, faceting kerak: avval col=, keyin row=.
hue (≤ 6 level), keyin style (≤ 4 level), keyin col, keyin row. size — oxirgi chora, chunki odamlar yuzani yomon baholaydi. Beshta o'zgaruvchidan oshsa, ikkita figure chizing.3-qadam — Har biri qanday turga kiradi?
Raqamlimi yoki categorical, agar categorical bo'lsa, tartiblimi yoki yo'q. Aynan shu qadam ko'pincha plotting muammosini emas, ma'lumot muammosini ochib beradi: aslida ID bo'lgan "raqamli" column, tartibi biriktirilmagan hafta kunlari column i, category bo'lishi kerak bo'lgan butun sonli pclass. Chart ni tuzatishdan oldin dtype ni tuzating — bir marta pd.Categorical(..., ordered=True) qilish o'nta joyda order= yozishdan afzal.
4-qadam — Har bir guruhda n qancha?
Sample hajmi bitta mark halol qancha tafsilot ko'tara olishini belgilaydi. Har bir guruhda taxminan o'ntadan kam kuzatuv bo'lsa, umuman xulosalamang: oltita raqamdan hisoblangan kvartillar — statistika kiygan shovqin, oltita raqamga fit qilingan violin esa yo'qdan o'ylab topilgan egri chiziq.
| Guruhdagi row lar | Ko'rsating | Ko'rsatmang |
|---|---|---|
| < 10 | Har bir nuqtani: stripplot, swarmplot yoki xom raqamlar |
Box, violin, boxen, KDE, error bar lar |
| 10 – 50 | swarmplot, ustiga nuqtalar qo'yilgan box, ECDF |
Boxen; ostida rug bo'lmagan KDE |
| 50 – 1,000 | Box, violin (cut=0), alpha li stripplot, histogram, scatter |
~500 dan yuqorida swarmplot — u nuqtalarni tashlay boshlaydi |
| 1,000 – 100,000 | Box, violin, histogram, 2-D histogram, KDE contour lari, alpha li scatter |
To'liq shaffofsizlikdagi har qanday nuqtali mark |
| > 100,000 | boxenplot, hexbin, 2-D histogram, datashader |
Scatter, swarm, strip, bootstrap CI lari (bunday n da sekin va foydasiz) |
Qaror jadvali
Jumlangizga mos keladigan birinchi ustunni o'qing.
| Sizda bor | Bilmoqchisiz | Ishlating | E'tibor bering |
|---|---|---|---|
| 1 ta raqamli | Distribution shakli | histplot; silliq o'qish uchun kdeplot; hakam sifatida ecdfplot |
Bin soni (#5), bandwidth (#6), chegaralar (#17) |
| 1 ta categorical | Har bir level da nechta bor | countplot (label lar uzun bo'lsa gorizontal) |
Category tartibi (#13) |
| 2 ta raqamli | Bog'liqlik, cluster lar, outlier lar | scatterplot; trend chizig'i kerak bo'lsa regplot |
Overplotting (§23.4), band ma'nosi (#3) |
| 2 ta raqamli, x tartibli/vaqt | Tartib bo'yicha trend | lineplot |
Jimgina aggregation (#2); sort=True trayektoriyalarni chalkashtiradi |
| 1 ta categorical + 1 ta raqamli, kichik n | Har bir qiymat | swarmplot yoki jitter li stripplot |
Tashlangan nuqtalar (#11) |
| 1 ta categorical + 1 ta raqamli, o'rtacha n | Guruhlar bo'ylab tarqalish va qiyshiqlik | boxplot; shakl muhim bo'lsa violinplot(cut=0) |
Yashirin bimodallik (#7) |
| 1 ta categorical + 1 ta raqamli | O'rtacha va farq ishonchli yoki yo'qligi | barplot (bazasi 0) yoki pointplot (faqat tartibli x) |
O'rtacha-count emas (#1), belgilanmagan error bar lar (§23.3) |
| 1 ta categorical + 1 ta binary 0/1 | Nisbat | 0/1 column ida barplot — uning o'rtachasi aynan ulush |
O'qni "survived" emas, "rate" deb belgilang |
| 2 ta categorical | Ular orasidagi bog'liqlik | crosstab + heatmap; yoki hue li countplot |
Count lar va normalize= turli savollarga javob beradi |
| 2 ta categorical + 1 ta raqamli | Har bir katakdagi qiymat | pivot_table + heatmap |
fill_value=0 — bu da'vo; bo'sh katak ≠ nol |
| Ko'p raqamli | Qaysi juftliklar bog'liq | Saralash uchun heatmap(df.corr(numeric_only=True)), so'ng ko'rish uchun pairplot(vars=...) |
numeric_only (#8), center=0 (#9), k² panel (#18) |
| 2 ta raqamli va ularning chekka taqsimotlari | Bog'liqlik va ikkala distribution bir vaqtda | jointplot; qatlamlash kerak bo'lsa JointGrid |
kind="reg"/"hex" hue ni qabul qilmaydi |
| Yuqoridagilarning istalgani, guruh bo'yicha bo'lingan | Har bir bo'lak uchun bir xil chart | col=, row= bilan relplot/displot/catplot/lmplot |
Figure-level qoidalari (#19, #20, #21) |
| 2 ta raqamli, binary natija | Natijaning ehtimoli | lmplot(logistic=True, y_jitter=0.03) |
statsmodels kerak; sekin; y raqamli 0/1 bo'lishi shart |
Ikkinchi chart ni chizish o'n soniya vaqt oladi. Agar histogram va ECDF bir xil hikoyani aytsa, auditoriyangiz tezroq o'qiydiganini chop eting. Agar ular zid kelsa, aynan shu zidlik — topilma: odatda bandwidth, bin chegarasi yoki smoother ishonarli do'nglikka aylantirib yuborgan takroriy qiymatlar to'plami.
23.3 Halol chart lar
Bu bo'limdagi har bir usul halol niyatli odamga ham, yomon niyatli odamga ham bir xilda ochiq, natijadagi figure lar esa bir-biridan farq qilmaydi. Aynan shu sababdan bu mavzu axloq ilovasida emas, o'quv qo'llanmasida turibdi: himoya vositasi fazilat emas, checklist.
1. Kesilgan o'qlar farqni bo'rttiradi
Ikkita bar: 102 va 105. 0 dan 110 gacha bo'lgan o'qda ular ko'zga bir xil balandlikda ko'rinadi — va bu to'g'ri, chunki ular 3% ga farq qiladi. 100 dan 106 gacha bo'lgan o'qda esa biri ikkinchisidan besh barobar katta bo'lib chiqadi. Hech nima soxtalashtirilmagan: raqamlar to'g'ri, tick label lar to'g'ri, o'qni tekshirmagan o'quvchi esa noto'g'ri nisbat bilan chiqib ketadi.
ax = sns.barplot(data=tips, x="day", y="total_bill", errorbar=None) ax.set_ylim(17, 22) # bar larda HALOL EMAS: uzunlik endi qiymatni kodlamaydi # agar farqlar kichik va haqiqiy bo'lsa, o'qni emas, mark ni o'zgartiring sns.pointplot(data=tips, x="day", y="total_bill", errorbar=("ci", 95)) # bu yerda qiymat pozitsiya bilan kodlangan, shuning uchun y o'qini kattalashtirish o'rinli
Istisno qoidani o'rgatiladigan qiladi. Tana harorati vaqt qatorini 0 °C dan boshlashga majburlash har bir haqiqiy tebranishni chart ning tepasidagi tekis chiziqqa siqib qo'yadi — bu boshqa turdagi yolg'on, ya'ni haqiqiy effektni yashirish yolg'oni. Qaysi kanal kodlayotganini so'rang: uzunlik nolni talab qiladi, pozitsiya esa yo'q.
Siz odatda kimnidir aldash uchun set_ylim yozmaysiz. Kesilishni facet_kws={"sharey": False} dan tekinga olasiz: bunda har bir panel o'z qutisini to'ldirish uchun qayta masshtablanadi va kattaliklari keskin farq qiladigan guruhlar bir xil ko'rinib qoladi. Yagona signal — tick label lar, o'quvchilar esa tick label larni o'qimaydi. Agar o'qni ajratsangiz, sarlavhaga "y o'qi har bir panel uchun alohida masshtablangan" deb yozing.
2. O'rtacha ortida yashiringan n
500 ta review dan qurilgan 4.8 li bar va 3 ta review dan qurilgan 4.9 li bar bir xil chiziladi. Ulushlari 200 va 2 ta row dan kelgan ikkita heatmap katagi ham shunday. NaN olib tashlangandan keyin biri 300, ikkinchisi 30 row ga fit qilingan ikkita facet ham shunday. Seaborn buni sizga hech qachon aytmaydi, normalizatsiya esa — odatda statistik jihatdan to'g'ri tanlov — n ning oxirgi vizual izini ham o'chirib yuboradi.
# n ni o'quvchi ko'radigan joyga qaytaring counts = penguins["species"].value_counts() labels = [f"{s} (n={counts[s]})" for s in counts.index] # yoki har bir facet ni o'z bo'lagidan annotate qiling def panel(data, **kws): ax = plt.gca() ax.scatter(data["total_bill"], data["tip"], s=18, alpha=0.6, **kws) ax.text(0.05, 0.92, f"n = {len(data)}", transform=ax.transAxes, fontsize=9) g = sns.FacetGrid(tips, col="day", col_wrap=2, height=2.8) g.map_dataframe(panel)
Qoida oddiy va yoqimsiz: normalizatsiya qilish to'g'ri, count larni yashirish esa yo'q. n ni legend label larida, panel ustidagi annotation da yoki caption da bering — lekin qayerdadir bering.
3. Belgilanmagan error bar lar
Bar ustidagi vertikal qalpoqcha 95% confidence interval ham, bitta standart xato ham, bitta standart og'ish ham, 50% percentile interval ham bo'lishi mumkin. Bir xil ma'lumotda ular uch va undan ko'p barobar farq qiladi hamda turli savollarga javob beradi. Belgilanmagan error bar li chart hech qanday ilmiy ma'noda o'qib bo'ladigan emas, o'quvchining standart taxmini esa odatda noto'g'ri.
errorbar= |
Nimani ta'riflaydi | n oshgani sari qisqaradimi? | O'quvchi qanday xulosa qilishi kerak |
|---|---|---|---|
("ci", 95) (seaborn standarti) |
Baholangan o'rtachadagi noaniqlik, bootstrap qilingan | Ha | "O'rtacha qayerdaligini taxminan shu aniqlikda bilamiz" |
("se", 1) |
O'rtachaning bitta standart xatosi, analitik hisoblangan | Ha | Xuddi shu o'qilish, ~68% qamrov, bootstrap xarajatisiz |
"sd" |
Kuzatuvlarning o'zining tarqoqligi | Yo'q | "Alohida qiymatlar shu qadar farq qiladi" |
("pi", 50) |
Xom qiymatlarning 25-dan 75-percentile gacha | Yo'q | SD bilan bir xil, lekin noparametrik |
None |
Hech nima | — | Ilgari nimaga ishongan bo'lsa, o'sha |
Bu keltirib chiqaradigan xato aniq va keng tarqalgan: 244 ta row bilan CI qalpoqchalari qisqa bo'ladi va o'quvchi "ma'lumot zich to'plangan" degan xulosaga keladi. Aslida unday emas. Faqat o'rtachaning bahosi aniq. Agar auditoriyangizni tarqoqlik qiziqtirsa, to'g'ri chart — box yoki violin, error bar lar esa noto'g'ri tanlov.
"Bar lar guruh o'rtachalari; qalpoqchalar bootstrap 95% confidence interval lari (n = 152 / 124 / 68)." Shu jumla figure ni tushunarli qiladi, yozishga o'n soniya ketadi va ko'pchilik talaba ishlarida hamda anchagina chop etilgan ishlarda uchramaydi.
4. Mavjud bo'lmagan tartibni uqtiradigan rang
Bu #10 gotcha sifatida ko'rib chiqilgan edi, bu yerda qayta aytilyapti, chunki bu texnik nosozlikdan ko'ra ko'proq ritorik nosozlik. Tartibsiz category lardagi sequential ramp o'quvchiga bitta guruh shkalaning cho'qqisi ekanini aytadi. center= siz diverging map "neytral" ni ixtiyoriy qiymatga qo'yadi, shuning uchun kichik musbat effektlar manfiy bo'lib chiziladi. Rainbow map chegaralar ishlab chiqaradi — ma'lumot tekis o'zgargan joyda ko'z siyoh-sariq o'tishini ma'lumotdagi chegara deb o'qiydi.
Bunga mos halol odatlar: palette turini o'zgaruvchi turiga moslang; diverging map larni center=0 va simmetrik chegaralar bilan mahkamlang; jet ni hech qachon ishlatmang; bir xil kattalikning ikkita chart i birga ko'riladigan bo'lsa, vmin/vmax ni mahkamlang.
5. Tanlab olingan bin lar, bandwidth lar va oynalar
Bin soni — o'quvchining xulosasini o'zgartiradigan erkin parametr va hech qanday caption an'anasi uni oshkor qilishni talab qilmaydi. Barcha bin chegaralarini yarim bin ga surish birorta qiymatni o'zgartirmasdan cho'qqini birlashtirishi yoki bo'lishi mumkin. bw_adjust=2 li KDE mode ni o'chirib yuborishi mumkin; bw_adjust=0.3 bilan esa uchtasini o'ylab topishi mumkin.
Halollik checklist i
- Bar lar noldan boshlanadimi? Kesilgan o'q pozitsiya bilan kodlangan chart dami va bu aytilganmi?
- Har bir guruh uchun n ko'rinadimi — legend da, annotation da yoki caption da?
- Har bir error bar ning turi va darajasi ko'rsatilganmi?
- Palette turi o'zgaruvchi turiga mos keladimi va diverging map markazlashtirilganmi?
- Bin kengligi, bandwidth va har qanday
robust=yokivmin/vmaxkesish aytilganmi? - Facet lar o'qlarni bo'lishadimi; agar yo'q bo'lsa, sarlavha buni aytadimi?
- Sarlavha chart da qaysi o'zgaruvchilar borligini emas, u nimani ko'rsatayotganini aytadimi?
- Xulosa uni teskari, lekin asosli tanlov bilan qayta chizgan o'quvchida ham saqlanib qoladimi?
23.4 Ma'lumot plot qilish uchun juda katta bo'lganda
200,000 nuqtali scatterplot — bu qattiq qora to'rtburchak bo'lib, unda marker larning taxminan 80% i yuqori qatlam ostida yashiringan. Chart shunchaki xunuk emas — u noto'g'ri, chunki ko'rinadigan zichlikning haqiqiy zichlikka aloqasi yo'q. Yechimlar narvon hosil qiladi va siz uni oxirgi pog'onasiga sakramasdan, tartib bilan chiqishingiz kerak.
| Pog'ona | Usul | Qaysi hajmgacha ishlaydi | Narxi |
|---|---|---|---|
| 1 | alpha=0.02–0.3 — zichlik qorong'ilikka aylanadi |
~50,000 | Alohida outlier lar ko'rinmay qoladi |
| 2 | Kichikroq marker lar: s=6, edgecolor=None |
~50,000 | Hech narsa, katta hajmda buni doim qiling |
| 3 | 2,000–5,000 row li tasodifiy subsample | Cheksiz | Kam uchraydigan hodisalar tanlanmasligi mumkin; seed ni mahkamlang |
| 4 | Hexbin: jointplot(kind="hex") |
~10 million | Alohida nuqtalar yo'q; olti burchaklar kvadrat grid artefaktlarisiz joylashadi |
| 5 | 2-D histogram: histplot(x=, y=, bins=50, cbar=True) |
~10 million | Bin o'lchamiga sezgirlik qaytadi (#5) |
| 6 | KDE contour lari: kdeplot(x=, y=, fill=True, levels=8) |
~1 million | Silliqlash taxmini; sekin; har bir contour ga yetarli nuqta kerak |
| 7 | Avval aggregate qiling, keyin xulosani chizing | Cheksiz | Aggregation ni siz tanlaysiz, shuning uchun uni aytib o'ting |
| 8 | datashader / holoviews — render dan oldin rasterlash |
Milliardlar | Seaborn dan butunlay chiqib ketiladi |
big = tips.sample(200_000, replace=True, random_state=0) # 1+2-pog'ona: shaffoflik va kichik marker lar sns.scatterplot(data=big, x="total_bill", y="tip", alpha=0.02, s=6, edgecolor=None) # 3-pog'ona: subsample - shaklni ko'rish uchun odatda yetarli sns.scatterplot(data=big.sample(3000, random_state=0), x="total_bill", y="tip", alpha=0.4) # 4+5-pog'ona: nuqta chizish o'rniga bin lash sns.jointplot(data=big, x="total_bill", y="tip", kind="hex", height=5) sns.histplot(data=big, x="total_bill", y="tip", bins=50, cbar=True) # 6-pog'ona: density contour lari sns.kdeplot(data=big, x="total_bill", y="tip", fill=True, levels=8, thresh=0.05) # 7-pog'ona: aggregate qiling, keyin kichik xulosani chizing hourly = big.groupby("size", observed=True)["tip"].agg(["mean", "count"]).reset_index() sns.barplot(data=hourly, x="size", y="mean", errorbar=None)
Katta ma'lumotning uchta bog'liq muammosi
Diskret x. x oltita qiymat olganda nuqtalar oltita vertikal chiziqda ustma-ust yig'iladi va 5 ta nuqta 500 tadek ko'rinadi. Bu odatdagi ma'nodagi overplotting emas va alpha uni tuzatmaydi: stripplot(jitter=0.25), regplot da x_estimator=np.mean yoki histplot(discrete=True) ishlating.
Bootstrap tiqilinchga aylanadi. Standart CI har bir noyob x qiymati uchun 1,000 marta qayta namuna oladi. 5,000 ta turli timestamp li series da bu besh million qayta namuna demakdir va katak qotib qoladi. errorbar=None (noyob x da odatda to'g'ri), errorbar="se" (analitik) yoki n_boot=200, seed=0 ishlating. Xuddi shu narsa har bir replikatda model ni qaytadan fit qiladigan robust= va logistic= fit lariga ham tegishli.
Vektor fayllar shishib ketadi. 100,000 ta mark li SVG yoki PDF 100,000 ta shakl saqlaydi va o'nlab megabaytga yetishi mumkin. Faqat ma'lumot qatlamini rasterlang, matnni esa vektor holida qoldiring: ax.set_rasterized(True), so'ng plt.savefig("f.pdf", dpi=300).
Siz hali savol berayotgan paytingizda 5,000 row li tasodifiy sample ularning deyarli barchasiga bir necha barobar tez javob beradi — shakl, cluster lar, qiyshiqlik va outlier lar sampling dan keyin ham saqlanib qoladi. Figure nima deyishi kerakligini bilib olganingizdan keyin to'liq ma'lumotga qayting va aynan shu da'voning bin langan yoki aggregate qilingan variantini chizing.
23.5 Seaborn va muqobillari
Vositaga qachon murojaat qilmaslikni bilish ham uni bilishning bir qismi. Seaborn aniq bir o'rinni egallaydi: jadvalli ma'lumotning statistik chart lari, bir marta chiziladigan, Python dan, statik muhit uchun.
| seaborn | matplotlib | plotly | Excel / Power BI | |
|---|---|---|---|---|
| Nima uchun yaratilgan | Tidy DataFrame larning statistik chart lari | Har qanday 2-D chizma, hamda 3-D | Interaktiv web chart lar va dashboard lar | Dasturchi bo'lmaganlar uchun biznes hisobotlari |
| Facet li, rangli, CI band li plot uchun kod qatorlari | 1 | 30–60 | 3–10 | Deyarli mumkin emas |
| Siz uchun statistika hisoblaydimi | Ha — o'rtachalar, CI lar, KDE lar, regression lar, clustering | Yo'q | Qisman (trendline lar, marginal lar) | Trendline lar, o'rtachalar |
| Interaktivlik | Yo'q (statik rasm) | Minimal | Tug'ma: hover, zoom, filter, animatsiya | Power BI da tug'ma |
| Har bir artist ustidan nozik nazorat | U qaytaradigan matplotlib obyektlari orqali | To'liq | Yaxshi, boshqa API | Cheklangan |
| Kod dan qayta ishlab chiqarish | Ha | Ha | Ha | Yo'q — sichqoncha bosishlari kod emas |
| Chop etish / LaTeX uchun output | A'lo (PDF, SVG 300+ dpi da) | A'lo | Ishlatsa bo'ladi, headless renderer kerak | Yomon |
| 1M+ nuqtani ko'taradimi | Faqat bin lash orqali | Faqat bin lash orqali | WebGL rejimlarisiz yomon | Yo'q |
| Auditoriya ma'lumotni o'zi kavlay oladimi | Yo'q | Yo'q | Ha | Ha |
| O'rganish narxi | Past, agar pandas ni bilsangiz | Yuqori | O'rtacha | Past |
Matplotlib bilan munosabat raqobat emas
Seaborn — bu aynan matplotlib, ustiga statistika qatlami va semantic mapping qatlami qo'yilgan holda. sns.scatterplot() oxir-oqibat ax.scatter() ni chaqiradi. Har bir axes-level funksiya haqiqiy matplotlib.axes.Axes qaytaradi, har bir figure-level funksiya esa g.figure, g.axes va g.axes_dict ni ochib beradi. Shuning uchun "seaborn X ni qila olmaydi" degan gap deyarli har doim noto'g'ri: obyektni oling va matplotlib API sidan foydalaning. Log scale lar, soyalangan oraliqlar, twin axes lar, maxsus tick formatter lar, inset lar, GridSpec mozaikalari — barchasi mavjud, barchasi matplotlib orqali, barchasi seaborn chaqiruvidan keyin.
Seaborn ni qachon ishlatmaslik kerak
- Interaktiv dashboard lar. Agar auditoriyaga hover qilish, filter lash, chuqurroq kirish yoki sana oralig'ini o'zgartirish kerak bo'lsa, ularga plotly / Dash, Bokeh, Streamlit yoki Power BI kerak. Statik PNG qo'shimcha savolga javob bera olmaydi.
- 3-D. Seaborn da umuman 3-D funksiyalar yo'q.
matplotlibningmplot3dini yoki plotly ni ishlating — va avval 3-D chart ikkita 2-D chart sifatida yaxshiroq bo'lmasligini so'rang, odatda shunday bo'ladi. - Tarmoqlar va graflar. Node lar va edge lar seaborn tushunchasida jadvalli emas.
networkxni matplotlib bilan yokigraphvizni ishlating. - Xaritalar va geofazoviy ma'lumot.
geopandas,folium,plotlyyokicartopyni ishlating. Seaborn da proyeksiya, basemap va koordinata tizimi tushunchasi yo'q. - To'liq aniqlikdagi million nuqtali scatter. Render dan oldin rasterlaydigan
datashader/holoviewsni ishlating. Seaborn ning javobi — bin lash, bu ko'pincha to'g'ri javob, lekin bu boshqa chart. - Jonli yangilanadigan yoki oqim chart lari. Seaborn bir marta chizadi. Dashboard framework ini ishlating.
- Bitta raqam yoki sakkizta raqamli jadval. Chart kerak emas. Raqamni yozing yoki jadvalni formatlang.
Matplotlib — oshpaz pichog'i: u hamma narsani qila oladi va hech narsani tez qilmaydi. Seaborn — mandolina: bitta turdagi ish, bitta harakatda bajariladi va qanday ko'rinishi haqida o'z fikri bor. Plotly — xizmat aravachasi: u ovqatni odamlar o'zlariga olib olishi mumkin bo'lgan stolga yetkazadi. Excel — mikroto'lqinli pech: mutlaqo yetarli, hamma joyda mavjud va natijani kelasi yili qayta ishlab chiqarish kerak bo'lganda ishlatiladigan narsa emas.
23.6 Savollar banki
Boblar bo'yicha guruhlangan. Avval qaydlarsiz o'tib chiqing; ikki jumlada javob bera olmaganingiz qayta o'qish kerak bo'lgan bo'limga ishora qiladi. Yulduzcha bilan belgilangan uslub — mexanizm, keyin oqibat, keyin yechim — intervyu oluvchi eshitmoqchi bo'lgan narsa.
Asoslar (14-bob)
- Seaborn matplotlib bilan chizishiga qaramay, uning ustiga nima qo'shadi?
- Long-form (tidy) ma'lumot nima va nega deyarli barcha seaborn funksiyalari uni talab qiladi?
- Qaysi seaborn funksiyasi bu qoidadan istisno va uning o'rniga qanday shakl kerak?
- Seaborn column categorical yoki raqamli ekanini qanday hal qiladi va buni qanday bekor qilasiz?
- Nomlangan column li DataFrame o'rniga numpy array uzatsangiz nimani yo'qotasiz?
- To'rtta figure-level faceting funksiyasini va ular o'raydigan axes-level oilalarni ayting.
- "Semantic mapping" nima va seaborn qaysi uchta kanalni taklif qiladi?
sns.load_dataset()ma'lumotni qayerdan oladi, qayerda cache laydi va xom CSV ga nima qiladi?sns.set_theme()nimani o'zgartiradi va nega uni figure qurilgandan keyin chaqirish hech nima qilmaydi?
Relational plot lar (15-bob)
scatterplotvalineplotfarqini aggregation haqidagi bitta jumlada ayting.- Siz
flightsdalineplotchaqirdingiz va soyalangan band oldingiz. Bu nima va buni qanday isbotlagan bo'lardingiz? errorbar=("ci", 95),errorbar="sd"vaerrorbar=Noneni tushuntiring. Qaysi biri n bilan qisqaradi?size="size"vas=60orasidagi farq nima?hue,sizevastyleni o'qilishi bo'yicha tartiblang va har biriga level chegarasini bering.- Nega uzluksiz
huecolourbar hosil qilmaydi va uni qanday qo'shasiz? lineplotdasort=Falseni qachon qo'yasiz?relplotsizgascatterplotberolmaydigan nimani beradi va nimani tortib oladi?- Standart CI 5,000 timestamp li line plot ni qotirib qo'ydi. Afzallik tartibida uchta yechim bering.
- Redundant encoding nima va qo'shimcha kanalga arzigan holat qachon?
Distribution plot lar (16-bob)
distploto'rnini nima egalladi va unda nima noto'g'ri edi?- Bin sonini qanday tanlaysiz? Nega
binwidthodatda yaxshiroq argument? - Beshta
stat=qiymati nimani anglatadi va"density"ostida 0.06 balandlikdagi bar nimani bildiradi? - KDE dagi chegara muammosini tushuntiring va uchta yechim bering.
bw_adjustnima qiladi va standart qiymat qanday xatoga yo'l ochadi?- Histogram va KDE zid kelganda nega ECDF hakam bo'ladi?
- Siz 5,000, 500 va 50 row li uchta guruhni solishtirasiz. Aniq nimani o'rnatasiz va nega ikkala qism ham shart?
- To'rtta
multiple=layout ini ayting va har biri qachon buzilishini tushuntiring. - KDE ostidagi rug plot nima qo'shadi?
- Har biri nima qaytarishi nuqtayi nazaridan
histplotvadisplotorasidagi farq nima?
Categorical plot lar (17-bob)
sns.barplot()dagi bar balandligi nimani ifodalaydi?countplotda-chi?- Seaborn ning confidence interval i qayerdan keladi va nega u har safar biroz boshqacha bo'ladi?
- Boxplot ning har bir elementini tushuntiring, jumladan whisker lar nega aynan o'sha yerda to'xtashini.
- Nega 1.5 × IQR va bu konvensiya qiyshiq ma'lumotda nima bo'ladi?
- Box o'rniga violin ni qachon tanlaysiz va
cut=0nimani tuzatadi? - 0/1 column dan foydalanib count emas, rate ni qanday chizasiz?
stripplotyokiswarmplot— qanday hal qilasiz va qaysi warning bahsga nuqta qo'yadi?- Nega bar chart noldan boshlanishi shart, pointplot esa shart emas?
- Kunlaringiz "Fri, Sat, Sun, Thur" bo'lib chiqdi. Uchta yechim bering va qaysi biri eng barqaror ekanini ayting.
boxenplotnima uchun va qanday n dan boshlab foyda bera boshlaydi?
Matrix plot lar (18-bob)
- Nega tidy DataFrame ni to'g'ridan-to'g'ri
sns.heatmap()ga uzatib bo'lmaydi? - Matrix formaga olib boradigan to'rtta yo'lni va har biri qaysi vaziyat uchun ekanini ayting.
pivotvapivot_table: qaysi xato sizga almashtirish kerakligini aytadi?- Correlation heatmap retseptining oltita argumentini yoddan ayting.
- Correlation 0 ga teng — o'zgaruvchilar bog'liq emasmi? Misol bilan asoslang.
- Pearson o'rniga Spearman ni qachon ishlatasiz va ikkala matrix ni solishtirish nimani aniqlaydi?
- Nega yuqori uchburchakni mask qilasiz va 10 o'zgaruvchili matrix nechta alohida fakt saqlaydi?
- Siz ikkita feature orasida r = 0.98 ni ko'rdingiz. Bu yaxshi xabarmi?
clustermapheatmapqilmaydigan nimani qiladi va uning asosiy tuzog'i nima?- Nega o'zgarmas column correlation heatmap da bo'sh chiziq hosil qiladi?
- Count lar yoki ulushlar:
normalize="index"vanormalize="columns"qanday turli savollarga javob beradi?
Regression plot lar (19-bob)
- Regression chizig'i atrofidagi soyalangan soha aynan nima va u bo'lmagan ikkita narsani ayting?
- Nega tor band yaxshi model dalili emas?
regplotdan slope, intercept yoki R² ni ololasizmi? Agar yo'q bo'lsa, ular qayerdan keladi?- Anscombe kvarteti nima va u nimani isbotlaydi?
- Sog'lom residual plot ni ta'riflang, so'ng ikkita nosog'lom pattern va ularning yechimlarini ayting.
- Qaysi model argumentlari statsmodels talab qiladi va nega ular sekin?
- Natija binary bo'lganda regression ni qanday chizasiz va y column qanday ko'rinishi kerak?
x_estimatorvax_binsnima uchun va ulardan biri fit ni o'zgartiradimi?- Simpson paradoksini ta'riflang va uni seaborn da tekshirishning ikki qatorli usulini bering.
- Nega
truncate=Truestandart holda yoqilgan?
Grid lar (20-bob)
- Funksiya axes-level yoki figure-level ekanini aniqlashning amaliy bir savolli sinovini bering.
- Nega small multiples bitta panel dagi beshta rangdan ko'ra oson o'qiladi? Idrok nuqtayi nazaridan javob bering.
g.map()vag.map_dataframe()orasidagi farq nima?FacetGridni qo'lda qurishga majbur qiladigan uchta vaziyatni ayting.catplotdasharey=Falseqayerga yoziladi va har ikki tomonda qanday xavf bor?- Nega pairplot ning diagonali distribution bo'ladi va
corner=Truenimani tejaydi? - 12 column li frame da
sns.pairplot(df)5×5 grid berdi. Nima bo'ldi? map_upper,map_lowervamap_diagpairplotimkon bermaydigan nimani mumkin qiladi?jointploto'rnigaJointGridqachon kerak bo'ladi?- Qaytarilgan grid ning aniq bitta panel iga qanday yetib borasiz va nega
axes_dictindekslashdan xavfsizroq? - Nega
col_wraprow=bilan mos kelmaydi?
Styling va output (21-bob)
- Style va context orasidagi farq nima va ulardan biri kanvas o'lchamini o'zgartiradimi?
- Proyektorga chiqariladigan ma'ruza slaydi uchun qaysi context ni ishlatasiz va uning masshtab koeffitsiyenti qancha?
- Uchta palette turini uch xil o'zgaruvchiga bog'laydigan qoidani ayting.
- Nega
jetyomon colormap? Uchta mustaqil sabab bering. relplotni qanday o'lchaysiz va negaplt.figure(figsize=...)e'tiborsiz qoldiriladi?- Saqlangan PNG ingiz bo'sh. Sababini aniqlang.
bbox_inches="tight"nima qiladi va utight_layout()dan qanday farq qiladi?- Figure ni rang ko'rmaydigan o'quvchi uchun mustahkam qiladigan to'rtta narsani sanang va ularning barchasini ushlaydigan bitta test ni ayting.
- Qachon PNG, qachon SVG yoki PDF ishlatasiz? Zich scatter lar uchun istisno nima?
- Seaborn sizga kerak narsani qila olmaydi — log o'q, soyalangan band, aralash 2×2 panel. Nima qilasiz?
- Nega
sns.move_legend()ikkinchiplt.legend()dan afzal?
Kesishuvchi mavzular (so'raladiganlari)
- Axes-level / figure-level bo'linishini tushuntiring va uning oltita amaliy oqibatini sanang.
- Jimgina aggregate qiladigan har bir seaborn funksiyasini ayting va har biri nimani hisoblashini tushuntiring.
- Silliqlash parametri bor har bir seaborn funksiyasini va o'sha parametrni ayting.
- Qaysi seaborn standartlari neytral emas, balki statistik jihatdan fikri bor va har birining fikri nima?
- Ilgari ko'rmagan savolingiz uchun chart tanlash jarayonini bosqichma-bosqich ko'rsating.
- Boshqa birov tayyorlagan figure berilganda, unga ishonishdan oldin nimani tekshirasiz?
23.7 II qism xulosasi
14–22-boblarni tugatgan talaba endi quyidagilarni yordamsiz bajara oladi:
- Notanish DataFrame ni olib, uning shape, dtype lari va missing qiymatlarini tekshirib, asoslangan birinchi qarash tayyorlaydi — saralash uchun correlation heatmap, qiziqarli o'zgaruvchilarda corner pairplot va muhim har bir column ning distribution i.
- Chart ni odat bo'yicha emas, savoldan kelib chiqib tanlaydi: o'zgaruvchilar soni, o'zgaruvchi turi va har bir guruhdagi sample hajmi orqali.
- Chart idagi har bir mark nimani ifodalashini aniq aytadi: qaysi statistika, qaysi row lar ustida hisoblangan, qaysi row lar tashlangan.
- Ikki oila orasida erkin harakat qiladi — tuzilgan layout lar uchun
ax=li axes-level funksiyalar, small multiples uchuncol=/row=li figure-level funksiyalar — va seaborn to'xtaganda ostidagi matplotlib obyektlariga yetib boradi. - Qo'shimcha o'zgaruvchilarni to'g'ri tartibda kodlaydi (
hue, keyinstyle, keyin facet lar), tuzilishi o'zgaruvchi tuzilishiga mos palette bilan, kulrang shkalada ham, qizil-yashil ko'rish nuqsonida ham o'qiladigan qilib. - Bog'liqlikni shunchaki chizmasdan, uni tashxis qiladi: residual larni tekshiradi,
hue=bilan confounder ni tekshiradi, shaklni Anscombe ogohlantirishiga solishtiradi va raqamlar uchun statsmodels ga boradi. - Long ma'lumotni
pivot,pivot_table,crosstabyokicorrbilan matrix formaga o'tkazadi va correlation matrix ini ortiqcha talqin qilmasdan o'qiydi. - O'z muhitiga mos figure ishlab chiqaradi: ko'rish masofasiga to'g'ri context, birliklari bor insoniy o'q label lari, chart ga yozilgan xulosa,
show()dan oldin to'g'ri dpi vabbox_inches="tight"bilan saqlangan. - Boshqa birovning chart iga qarab kesilgan o'qni, yashiringan n ni, belgilanmagan error bar ni va mavjud bo'lmagan tartibni o'ylab topgan palette ni topa oladi.
Yodlashga arziydigan uchta jumla
Axes ichiga chizadi, ax= ni qabul qiladi va birga tuziladi; figure-level funksiyalar Figure ga egalik qiladi, col=/row= bilan facet qiladi, height/aspect bilan o'lchanadi va o'zlari qaytaradigan grid obyekti orqali boshqariladi — shu sababdan plt.title() noto'g'ri panel ga tushadi.center=0 li diverging; normalizatsiya bilan yo'qotgan hamma narsani — avvalo sample hajmini — caption da qaytaring.Keyingisi: 24-bob hamma narsani to'rtta boshdan-oxir loyihada birlashtiradi.
Bu bobni bepul o'qidingiz.
Kitob o'rgatadi, lekin sizning kodingiz nega ishlamaganini ayta olmaydi. Kursda uy vazifangiz tekshiriladi.