Asosiy qismga o'tish

Tezkor cheat sheet

25-bob 4 kod bloki 2757 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

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?

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

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

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