Tezkor cheat sheet
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
| 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
-- 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?
- Nechta variable bor? 1 → distribution 2 → relationship 3+ → facet yoki grid
- Ular qanday turda? numeric / categorical / vaqt
- 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
# 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
# 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
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
- SQL siz yozgan tartibda bajarilmaydi — FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY.
- NULL noma'lum degani, shuning uchun u bilan har qanday taqqoslash UNKNOWN bo'ladi va
WHEREfaqat TRUE ni saqlaydi. - 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.