Asosiy qismga o'tish

Tezkor cheat sheet

25-bob 4 kod bloki 2718 so'z

Bu bobdagi kod shu fayllar bilan ishlaydio'z kompyuteringizda ishga tushiring

Qo'llanmadagi hamma narsa, siqilgan holda. Bu bob chop etish uchun mo'ljallangan — PDF tugmasidan foydalaning va faqat 25-bobni eksport qiling. Bu yerda hech narsa tushuntirilmaydi; har bir element uni tushuntirgan bobga ishora qiladi.

SQL — asosiy syntax

Yozilish tartibi va bajarilish tartibiYOZILADI: SELECT → FROM → WHERE → GROUP BY → HAVING → ORDER BY → LIMIT BAJARILADI: FROM/JOIN → WHERE → GROUP BY → HAVING → SELECT → DISTINCT → ORDER BY → LIMIT ↑ alias lar shu yerda tug'iladi
Vazifa Syntax Bob
Column larni tanlash SELECT a, b AS label FROM t 2
Row larni filter qilish WHERE x > 5 AND (y = 'a' OR z IS NULL) 2
Saralash ORDER BY a DESC, b ASC 2
Limit / sahifalash LIMIT 10 OFFSET 20 2
Takrorlanmas row lar SELECT DISTINCT a, b 2
Ro'yxatga tegishlilik WHERE city IN ('A','B') 3
Oraliq (chegaralari bilan) WHERE g BETWEEN 80 AND 90 3
Matn pattern i WHERE name LIKE 'Kar%' · %=ko'p, _=bitta 3
Yo'q qiymatlar WHERE g IS NULL / IS NOT NULL 1, 3
NULL ni almashtirish COALESCE(a, b, 'default') 3
Bo'lishni himoyalash x / NULLIF(y, 0) 3
Aggregate COUNT/SUM/AVG/MIN/MAX 4
Group qilish GROUP BY a HAVING COUNT(*) > 1 4
Join JOIN t2 ON t1.id = t2.id 5
Mos kelmaganlarni saqlash LEFT JOIN t2 ON ... 5
Nomlangan qadam WITH s AS (SELECT ...) SELECT ... FROM s 6
Mavjudlik testi WHERE EXISTS (SELECT 1 FROM ...) 6
Rank ROW_NUMBER() OVER (PARTITION BY g ORDER BY x DESC) 7
Oldingi row LAG(x) OVER (ORDER BY d) 7
O'suvchi yig'indi SUM(x) OVER (ORDER BY d) 7
If/else CASE WHEN c THEN a ELSE b END 8
Natijalarni ustma-ust qo'yish UNION ALL 9
Ikkalasida / faqat birinchisida INTERSECT / EXCEPT 9
Filter ni tezlashtirish CREATE INDEX i ON t(col) 11
Plan ni ko'rish EXPLAIN QUERY PLAN <query> 11

SQL — yodlashga arziydigan pattern lar

python48 qator
-- Har bir group uchun Top N ...................................... Ch.7
WITH r AS (SELECT *, ROW_NUMBER() OVER (PARTITION BY g ORDER BY x DESC) rn FROM t)
SELECT * FROM r WHERE rn <= 3;

-- Qaysi X da Y yo'q?  (anti-join) ................................ Ch.5
SELECT a.* FROM a LEFT JOIN b ON a.id = b.a_id WHERE b.a_id IS NULL;
-- NULL-safe muqobil:
SELECT * FROM a WHERE NOT EXISTS (SELECT 1 FROM b WHERE b.a_id = a.id);

-- Dublikatlarni topish ........................................... Ch.4
SELECT k1, k2, COUNT(*) FROM t GROUP BY k1, k2 HAVING COUNT(*) > 1;

-- Pivot: row lardan column larga ................................. Ch.8
SELECT g,
       SUM(CASE WHEN s = 'a' THEN 1 ELSE 0 END) AS a,
       SUM(CASE WHEN s = 'b' THEN 1 ELSE 0 END) AS b
FROM t GROUP BY g;

-- Group ning shartga mos qismi (foizda) .......................... Ch.4
ROUND(100.0 * SUM(CASE WHEN cond THEN 1 ELSE 0 END) / COUNT(*), 1)

-- Har bir row ning umumiydagi ulushi ............................. Ch.7
ROUND(100.0 * COUNT(*) / SUM(COUNT(*)) OVER (), 1)

-- Oydan oyga o'zgarish ........................................... Ch.7
(n - LAG(n) OVER (ORDER BY m)) * 100.0 / LAG(n) OVER (ORDER BY m)

-- Ikkinchi / N-o'rindagi eng katta ............................... Ch.13
WITH r AS (SELECT x, DENSE_RANK() OVER (ORDER BY x DESC) k FROM t)
SELECT DISTINCT x FROM r WHERE k = 2;

-- Median (standart SQL da MEDIAN() yo'q) ......................... Ch.13
WITH o AS (SELECT x, ROW_NUMBER() OVER (ORDER BY x) rn, COUNT(*) OVER () n FROM t)
SELECT AVG(x) FROM o WHERE rn IN ((n+1)/2, (n+2)/2);

-- Xavfsiz sana oralig'i (timestamp ga BETWEEN ishlatmang) ........ Ch.3
WHERE d >= '2026-01-01' AND d < '2026-02-01';

-- Fan-out bo'lmasligi uchun JOIN dan oldin aggregate ............. Ch.5
WITH per AS (SELECT fk, COUNT(*) n FROM child GROUP BY fk)
SELECT p.*, per.n FROM parent p LEFT JOIN per ON per.fk = p.id;

-- Xavfsiz update marosimi ........................................ Ch.10
SELECT * FROM t WHERE cond;        -- 1. qara
BEGIN TRANSACTION;                  -- 2. himoya
UPDATE t SET c = v WHERE cond;      -- 3. bir xil WHERE
SELECT * FROM t WHERE cond;         -- 4. tekshir
COMMIT;                             -- yoki ROLLBACK

SQL — har biri bir qatorlik gotcha lar

GotchaYechimBob

NOT IN + NULL → nolta row, xatolik yo'qNOT EXISTS3 LEFT JOIN dan keyin COUNT(*) → 0 birga aylanadiCOUNT(right.pk)5 Ko'p tomonga join SUM ni shishiradiAvval aggregate, keyin join5 O'ng jadval filter i WHERE da LEFT JOIN ni o'ldiradiUni ON ichiga qo'ying5 col <> 'x' NULL row larni sezdirmay tashlaydiOR col IS NULL2 12/20*100 = 0* 100.02 NULL tarmog'i yo'q CASE → baholanmagan F bo'lib o'qiladiAvval WHEN x IS NULL8 GROUP BY bo'sh group larni yashiradiDimension dan LEFT JOIN4, 5 Nolta row ustida SUM = NULLCOALESCE(SUM(x),0)4 AVG(CASE...) ichida ELSE 0``ELSE ni tushirib qoldiring8 ORDER BY siz LIMITDoim avval saralang2 WHERE da alias ishlatishUni takrorlang yoki CTE ishlating2 WHERE da window functionCTE, keyin filter7 Filter lanayotgan column ni function ichiga o'rashOraliq shaklida qayta yozing11 WHERE siz UPDATE/DELETEAvval SELECT, transaction ichida10 SQLite standart holda foreign key larni e'tiborsiz qoldiradiPRAGMA foreign_keys = ON10 Python da f-string bilan SQL? parametrlari12 conn.commit() tushib qolganwith conn:12

Menga qaysi plot kerak?

Uchta savol bilan tanlang
  1. Nechta variable bor? 1 → distribution 2 → relationship 3+ → facet yoki grid
  2. Ular qanday turda? numeric / categorical / vaqt
  3. Nechta row bor? kam → point larni ko'rsating ko'p → density ni ko'rsating
Savol Ma'lumot Plot Bob
Qanday taqsimlangan? 1 numeric histplot, kdeplot, ecdfplot 16
Har biridan nechta? 1 categorical countplot 17
Ular birga o'zgaradimi? 2 numeric scatterplot, jointplot 15, 20
Trend bormi? 2 numeric regplot, lmplot 19
Vaqt bo'yicha? vaqt + numeric lineplot 15
Group lar orasida farq bormi? cat + numeric boxplot, violinplot 17
Har bir group da o'rtacha? cat + numeric barplot (bu mean!) 17
Ikki category o'zaro ta'sirdami? 2 categorical crosstab ning heatmap i 18
Nima nima bilan bog'liq? ko'p numeric corr heatmap, pairplot 18, 20
Har bir subgroup da ham shundaymi? istalgani + category col= bilan faceting 20
Ekstremal qiymatlar qayerda? 1 numeric boxplot 17
Point lar ko'rish uchun juda ko'p 2 numeric, katta n hexbin, 2D histplot, kdeplot 16, 20

Seaborn — funksiyalar ma'lumotnomasi

Axes-level → figure-levelscatterplot, lineplot → relplot histplot, kdeplot, ecdfplot, rugplot → displot barplot, countplot, boxplot, violinplot, boxenplot, stripplot, swarmplot, pointplot → catplot regplot, residplot → lmplot axes-level : ax= oladi, Axes qaytaradi, o'lcham plt.figure(figsize=) orqali figure-level: ax= yo'q, Grid qaytaradi, o'lcham height= va aspect= orqali, col= / row= ni qo'llaydi, title g.figure.suptitle() orqali
python43 qator
# har bir seaborn chaqiruvining shakli
sns.PLOT(data=df, x="col", y="col", hue="col", ...)

# relational .................................................. Ch.15
sns.scatterplot(data=d, x=, y=, hue=, size=, style=, alpha=)
sns.lineplot(data=d, x=, y=, hue=, errorbar=("ci", 95))
sns.relplot(data=d, x=, y=, col=, row=, kind="scatter"|"line", height=, aspect=)

# distribution ................................................ Ch.16
sns.histplot(data=d, x=, bins=|binwidth=, stat="count"|"density", kde=True,
             hue=, multiple="layer"|"dodge"|"stack"|"fill", element="bars"|"step")
sns.kdeplot(data=d, x=, y=, bw_adjust=1, fill=True, cut=0, common_norm=False)
sns.ecdfplot(data=d, x=, hue=)
sns.displot(data=d, x=, col=, kind="hist"|"kde"|"ecdf")

# categorical ................................................. Ch.17
sns.countplot(data=d, x=, hue=)                     # ROW larni sanaydi
sns.barplot(data=d, x=, y=, estimator="mean", errorbar=("ci",95))  # bu MEAN
sns.boxplot(data=d, x=, y=, hue=, order=[...])
sns.violinplot(data=d, x=, y=, hue=, split=True, cut=0, inner="box")
sns.stripplot(data=d, x=, y=, jitter=.25, alpha=.6)  # kichik n
sns.swarmplot(data=d, x=, y=, size=3)                # faqat kichik n
sns.pointplot(data=d, x=, y=, hue=)
sns.catplot(data=d, x=, y=, col=, kind="box"|"bar"|"violin"|"strip"|"count")

# matrix (WIDE ma'lumot) .................................. Ch.18
sns.heatmap(matrix, annot=True, fmt=".2f", cmap="coolwarm",
            center=0, vmin=-1, vmax=1, mask=mask, linewidths=.5)
sns.clustermap(matrix, cmap="vlag", center=0)
# avval matrix oling:
df.pivot(index=, columns=, values=) | df.pivot_table(...) | pd.crosstab(a, b)
df.corr(numeric_only=True)                           # pandas 2+ da shart

# regression .................................................. Ch.19
sns.regplot(data=d, x=, y=, order=2, lowess=True, robust=True, logistic=True, ci=95)
sns.residplot(data=d, x=, y=)
sns.lmplot(data=d, x=, y=, hue=, col=, height=, aspect=)

# grids ....................................................... Ch.20
sns.pairplot(d, hue=, vars=[...], diag_kind="kde", corner=True, kind="scatter")
sns.jointplot(data=d, x=, y=, kind="scatter"|"hex"|"kde"|"reg", height=)
g = sns.FacetGrid(d, col=, row=, col_wrap=3, height=, hue=)
g.map_dataframe(sns.scatterplot, x=, y=); g.add_legend()

Seaborn — styling va natijani saqlash

python24 qator
# theme ....................................................... Ch.21
sns.set_theme(style="whitegrid", context="talk", palette="deep", font_scale=1.1)
# style:   darkgrid | whitegrid | dark | white | ticks
# context: paper | notebook | talk | poster   (siyohni masshtablaydi, figure o'lchamini EMAS)
sns.despine()

# palette lar — palette TURINI ma'lumot turiga moslang
qualitative : "deep" "muted" "colorblind" "Set2"    # tartibsiz category lar
sequential  : "viridis" "rocket" "mako" "Blues"     # past → yuqori
diverging   : "coolwarm" "vlag" "RdBu_r"            # o'rta nuqta — center=0 ishlating

# yakunlash (matplotlib)
plt.figure(figsize=(9, 5))                # faqat axes-level
plt.title("...") ; plt.xlabel("...") ; plt.ylabel("...")
plt.xticks(rotation=45, ha="right")
plt.legend(title="", bbox_to_anchor=(1.02, 1), loc="upper left")
plt.axhline(0, ls="--", color="grey")
ax.bar_label(ax.containers[0], fmt="%.0f")
plt.tight_layout()

# saqlash — DOIMO plt.show() dan oldin
plt.savefig("f.png", dpi=300, bbox_inches="tight")   # 300 print, 100 ekran
g.savefig("f.png", dpi=300, bbox_inches="tight")     # figure-level
plt.show()

SQL ↔ pandas ↔ seaborn

python8 qator
import sqlite3, pandas as pd, numpy as np, seaborn as sns, matplotlib.pyplot as plt

conn = sqlite3.connect("school.db")
df = pd.read_sql("SELECT ... FROM ... WHERE ...", conn,
                 params=(value,),              # HECH QACHON f-string emas
                 parse_dates=["enrolled_at"])
conn.close()
sns.boxplot(data=df, x="course", y="grade")

Seaborn — har biri bir qatorlik gotcha lar

GotchaYechimBob

barplot mean ni ko'rsatadi, count ni emascountplot row larni sanaydi17 plt.title() faqat oxirgi facet ga title qo'yadig.figure.suptitle()20 figsize ni figure-level e'tiborsiz qoldiradiheight=, aspect=20 show dan keyin savefig → bo'sh faylAvval saqlang21 KDE ma'lumotdan tashqarida density o'ylab topadicut=0, yoki histplot ishlating16 Bin soni hikoyani o'zgartiradiBir nechtasini sinang; binwidth afzal16 Boxplot bimodallikni yashiradiviolinplot17 swarmplot katta n da point larni tashlaydistripplot yoki violinplot17 Alifbo bo'yicha category tartibi ma'nosizorder=[...]17 df.corr() matnli column larda xato beradinumeric_only=True18 O'rta nuqtasiz diverging colormapcenter=0, vmin/vmax18 CI band ni prediction interval deb o'qishBu line ning noaniqligi19 lmplot ax= ni qabul qilmaydiregplot ishlating19 pairplot NaN row larni sezdirmay tashlaydiAvval isna() ni tekshiring20 Tartibsiz category larda sequential paletteQualitative palette ishlating21 Yagona encoding sifatida rangMarker/linestyle/label qo'shing21 load_dataset() internet talab qiladiCSV larni oldindan saqlang14 Wide ma'lumotni long-format function ga berishdf.melt()14 Long ma'lumotni heatmap ga berishdf.pivot()18 distplot / ci=``histplot / errorbar=14

Bir sahifalik workflow

Savoldan plot gacha1. SAVOL Uni bitta jumlada ayting. Natijani ta'riflang: nechta row, qaysi column lar. 2. SQL FROM → JOIN → WHERE → GROUP BY → SELECT Qatlamma-qatlam quring, har bir qatlamni ishga tushirib. Har bir JOIN dan oldin va keyin COUNT(*) ni tekshiring. ← fan-out Shu yerda qisqartiring: filter, aggregate, faqat kerakli column lar. 3. PANDAS pd.read_sql(q, conn, params=(...), parse_dates=[...]) df.info() ← eng qimmatli yagona chaqiruv dtype larni to'g'rilang. NaN larni sanang. Qaror qiling, o'ylamay o'chirmang. 4. EDA shape → missing → 1 var → 2 var → ko'p var → outlier lar Doim aniq group bo'yicha rang bering. ← Simpson paradoksi 5. PLOT sns.set_theme(style="whitegrid", context="talk") Plot tanlash jadvalidan tanlang. Ko'pi bilan ikki yoki uchta variable. Axes larni odam tilida belgilang, column nomlari bilan emas. 6. SAQLASH plt.savefig(..., dpi=300, bbox_inches="tight") plt.show() DAN OLDIN 7. YOZISH Yakuniy natija — 3-5 jumlalik xulosa, 20 ta plot emas. n ni yozing. Nimani chiqarib tashlaganingizni va nega ekanini yozing.
💡 Yodlab olish kerak bo'lgan uchta jumla
  1. SQL siz yozgan tartibda bajarilmaydi — FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY.
  2. NULL noma'lum degani, shuning uchun u bilan har qanday taqqoslash UNKNOWN bo'ladi va WHERE faqat TRUE ni saqlaydi.
  3. SQL da qisqartiring, Python da tahlil qiling va faqat bir jumlada tushuntira oladiganingizni plot qiling.

📄 Export to PDF

Type which chapters to export, then your browser's print dialog opens (choose "Save as PDF"). Examples: 1 2 3 · 1-5 · 4-6, 13 · all

Qaysi boblarni eksport qilishni yozing, keyin brauzer print oynasi ochiladi ("Save as PDF" ni tanlang). Misollar: 1 2 3 · 1-5 · 4-6, 13 · all

Bu bobni bepul o'qidingiz.

Kitob o'rgatadi, lekin sizning kodingiz nega ishlamaganini ayta olmaydi. Kursda uy vazifangiz tekshiriladi.

Telegramda yozish Narxlar