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
| Gotcha | Yechim | Bob |
|---|---|---|
NOT IN + NULL → nolta row, xatolik yo'q |
NOT EXISTS |
3 |
LEFT JOIN dan keyin COUNT(*) → 0 birga aylanadi |
COUNT(right.pk) |
5 |
Ko'p tomonga join SUM ni shishiradi |
Avval aggregate, keyin join | 5 |
O'ng jadval filter i WHERE da LEFT JOIN ni o'ldiradi |
Uni ON ichiga qo'ying |
5 |
col <> 'x' NULL row larni sezdirmay tashlaydi |
OR col IS NULL |
2 |
12/20*100 = 0 |
* 100.0 |
2 |
NULL tarmog'i yo'q CASE → baholanmagan F bo'lib o'qiladi |
Avval WHEN x IS NULL |
8 |
GROUP BY bo'sh group larni yashiradi |
Dimension dan LEFT JOIN |
4, 5 |
Nolta row ustida SUM = NULL |
COALESCE(SUM(x),0) |
4 |
AVG(CASE...) ichida ELSE 0 |
ELSE ni tushirib qoldiring |
8 |
ORDER BY siz LIMIT |
Doim avval saralang | 2 |
WHERE da alias ishlatish |
Uni takrorlang yoki CTE ishlating | 2 |
WHERE da window function |
CTE, keyin filter | 7 |
| Filter lanayotgan column ni function ichiga o'rash | Oraliq shaklida qayta yozing | 11 |
WHERE siz UPDATE/DELETE |
Avval SELECT, transaction ichida |
10 |
| SQLite standart holda foreign key larni e'tiborsiz qoldiradi | PRAGMA foreign_keys = ON |
10 |
| Python da f-string bilan SQL | ? parametrlari |
12 |
conn.commit() tushib qolgan |
with 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
| Gotcha | Yechim | Bob |
|---|---|---|
barplot mean ni ko'rsatadi, count ni emas |
countplot row larni sanaydi |
17 |
plt.title() faqat oxirgi facet ga title qo'yadi |
g.figure.suptitle() |
20 |
figsize ni figure-level e'tiborsiz qoldiradi |
height=, aspect= |
20 |
show dan keyin savefig → bo'sh fayl |
Avval saqlang | 21 |
| KDE ma'lumotdan tashqarida density o'ylab topadi | cut=0, yoki histplot ishlating |
16 |
| Bin soni hikoyani o'zgartiradi | Bir nechtasini sinang; binwidth afzal |
16 |
| Boxplot bimodallikni yashiradi | violinplot |
17 |
swarmplot katta n da point larni tashlaydi |
stripplot yoki violinplot |
17 |
| Alifbo bo'yicha category tartibi ma'nosiz | order=[...] |
17 |
df.corr() matnli column larda xato beradi |
numeric_only=True |
18 |
| O'rta nuqtasiz diverging colormap | center=0, vmin/vmax |
18 |
| CI band ni prediction interval deb o'qish | Bu line ning noaniqligi | 19 |
lmplot ax= ni qabul qilmaydi |
regplot ishlating |
19 |
pairplot NaN row larni sezdirmay tashlaydi |
Avval isna() ni tekshiring |
20 |
| Tartibsiz category larda sequential palette | Qualitative palette ishlating | 21 |
| Yagona encoding sifatida rang | Marker/linestyle/label qo'shing | 21 |
load_dataset() internet talab qiladi |
CSV larni oldindan saqlang | 14 |
| Wide ma'lumotni long-format function ga berish | df.melt() |
14 |
Long ma'lumotni heatmap ga berish |
df.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.