Mundarija (22)
- 1. Kirish va motivatsiya
- 2. Nazariya — chuqur tushuntirish
- 2.1. Uzun vs keng shakl
- 2.2. pivot_table (uzun → keng)
- 2.3. melt (keng → uzun)
- 2.4. stack va unstack
- 2.5. aggfunc (agregatsiya)
- 2.6. Pivot amaliyoti
- 2.7. Pivot tuzoqlari
- 2.8. Pivot — jadval shaklini o'zgartirish
- 3. Tez ma'lumotnoma
- 4. Batafsil misollar
- Misol 1 — pivot_table
- Misol 2 — melt
- Misol 3 — aggfunc
- Misol 4 — stack/unstack
- 5. To'g'ri va noto'g'ri tushunishlar
- 6. Keng tarqalgan xatolar va yechimlari
- 7. Integratsiya — bu bilim qayerda kerak bo'ladi
- 8. Eng yaxshi amaliyotlar
- 9. Amaliy topshiriq
- Xulosa
3.13-dars: Pivot va reshape
3-QISM — PANDAS · 13-dars
1. Kirish va motivatsiya
Ma'lumot ikki asosiy shaklda bo'ladi: uzun (long — har qator bir kuzatish: shahar, oy, savdo) va keng (wide — shaharlar qator, oylar ustun, kataklar savdo). Ba'zan bir shakldan boshqasiga o'tish kerak: tahlil uchun uzun qulay (groupby), taqdimot/jadval uchun keng chiroyli (Excel pivot). Bu — pivot (uzun → keng) va melt (keng → uzun). pivot_table — Excel'dagi pivot jadval (guruhlab, jadval shaklida), melt — ustunlarni qatorga aylantirish. Nega muhim? (1) Taqdimot — keng jadval o'qilishli (matritsa ko'rinishi); (2) Tahlil — uzun shakl qulay (groupby, filtr); (3) Moslik — turli vositalar turli shakl talab qiladi. Bu dars pivot va reshape'ni o'rgatadi — jadval shaklini o'zgartirish.
Pivot va reshape — jadval shaklini o'zgartirish: uzun vs keng (long — qator kuzatish; wide — matritsa), pivot_table (uzun → keng — guruhlab jadval; Excel pivot), pivot (oddiy — agregatsiyasiz), melt (keng → uzun — ustun → qator), stack/unstack (indeks ↔ ustun), agregatsiya (aggfunc — pivot_table ichida). Foydalanish: taqdimot (keng), tahlil (uzun), moslik. Bu 3.8 (groupby), 2.7 (reshape) bilan bog'liq. pivot — uzun→keng. melt — keng→uzun. Shakl.
Real vaziyat. Data Scientist savdo ma'lumoti bilan ishlar edi (uzun shakl: shahar, oy, savdo — har qator bir kuzatish). Taqdimot uchun keng jadval kerak edi (shaharlar qator, oylar ustun — matritsa, o'qilishli): df.pivot_table(index="shahar", columns="oy", values="savdo", aggfunc="sum") (Excel pivot kabi — shahar × oy, katak savdo). Aksincha: tashqi keng ma'lumot keldi (oylar ustun), tahlil uchun uzun kerak edi (groupby) — df.melt(id_vars="shahar", var_name="oy", value_name="savdo") (keng → uzun). Pivot/melt jadval shaklini o'zgartirdi (taqdimot ↔ tahlil). pivot_table — Data Science taqdimot va tahlil vositasi.
Bu darsda pivot va reshape'ni o'rganamiz.
Bu darsda:
- Uzun vs keng shakl
- pivot_table (uzun → keng)
- melt (keng → uzun)
- stack va unstack
- aggfunc (agregatsiya)
- Pivot amaliyoti
- Pivot tuzoqlari
- Amaliy: pivot modeli
ℹ Misollar real pandas bilan (deterministik) ishlaydi.
2. Nazariya — chuqur tushuntirish
2.1. Uzun vs keng shakl
Ikki asosiy shakl:
# UZUN (long) — har qator bir kuzatish
# shahar oy savdo
# T Yan 100
# T Fev 150
# S Yan 200
# KENG (wide) — matritsa
# shahar Yan Fev
# T 100 150
# S 200 250
# UZUN: tahlil qulay (groupby, filtr)
# KENG: taqdimot chiroyli (o'qilishli matritsa)Uzun vs keng shakl — ikki asosiy: uzun (long — har qator bir kuzatish: shahar, oy, savdo; ustun kam, qator ko'p), keng (wide — matritsa: shaharlar qator, oylar ustun, katak savdo; ustun ko'p). Sabab: turli maqsad — uzun (tahlil qulay — groupby, filtr, har kuzatish alohida; ma'lumot bazasi shakli), keng (taqdimot — o'qilishli matritsa, Excel; solishtirish oson). Bir ma'lumot ikki shaklda (uzun ↔ keng — o'zgartirish mumkin). Uzun (tahlil), keng (taqdimot). Uzun vs keng — kuzatish vs matritsa. Tahlil vs taqdimot. Shakl.
2.2. pivot_table (uzun → keng)
Uzun → keng (Excel pivot):
import pandas as pd
df = pd.DataFrame({
"shahar": ["T", "T", "S", "S"],
"oy": ["Yan", "Fev", "Yan", "Fev"],
"savdo": [100, 150, 200, 250],
})
# pivot_table — uzun → keng (guruhlab jadval)
df.pivot_table(index="shahar", columns="oy", values="savdo", aggfunc="sum")
# Fev Yan
# shahar
# S 250 200
# T 150 100 pivot_table (uzun → keng) — guruhlab jadval (Excel pivot): df.pivot_table(index="shahar", columns="oy", values="savdo", aggfunc="sum") (index — qator, columns — ustun, values — katak, aggfunc — funksiya). Sabab: uzun ma'lumotni matritsa qilish (shahar × oy — savdo; taqdimot, solishtirish); pivot_table guruhlab (index/columns bo'yicha — takror bo'lsa aggfunc yig'adi). index (qator yorliq), columns (ustun yorliq), values (katak qiymat), aggfunc (sum/mean — takror uchun). Excel pivot kabi (guruhlab jadval). pivot_table — uzun→keng (index/columns/values/aggfunc). Excel pivot. Matritsa.
2.3. melt (keng → uzun)
Keng → uzun (ustun → qator):
keng = pd.DataFrame({
"shahar": ["T", "S"],
"Yan": [100, 200],
"Fev": [150, 250],
})
# melt — keng → uzun (ustunlarni qatorga)
keng.melt(id_vars="shahar", var_name="oy", value_name="savdo")
# shahar oy savdo
# T Yan 100
# S Yan 200
# T Fev 150
# S Fev 250 melt (keng → uzun) — ustun → qator: keng.melt(id_vars="shahar", var_name="oy", value_name="savdo") (id_vars — saqlanadigan ustun; var_name — ustun nomlari ketadigan yangi ustun; value_name — qiymatlar). Sabab: keng ma'lumotni uzun qilish (tahlil uchun — groupby, filtr; ustunlar (oylar) → qator); melt ustunlarni qatorga aylantiradi. id_vars (o'zgarmas — shahar), qolgan ustunlar → var_name (oy) + value_name (savdo). pivot'ning teskarisi (keng → uzun). melt — keng→uzun (id_vars/var_name/value_name). Ustun→qator. Teskari.
2.4. stack va unstack
Indeks ↔ ustun:
df = pd.DataFrame({"a": [1, 2], "b": [3, 4]}, index=["x", "y"])
# stack — ustunlarni indeksga (keng → uzun, indeksli)
df.stack()
# x a 1
# b 3
# y a 2
# b 4
# unstack — indeksni ustunga (uzun → keng)
df.stack().unstack() # asl (keng) stack va unstack — indeks ↔ ustun: stack (ustunlarni indeksga — keng → uzun, MultiIndex; ustun → indeks daraja), unstack (indeksni ustunga — uzun → keng; indeks daraja → ustun). Sabab: MultiIndex bilan ishlash (groupby ko'p ustun — 3.8; stack/unstack — indeks/ustun almashtirish); stack (ustun → indeks — ixchamroq), unstack (indeks → ustun — matritsa). groupby([...]).unstack() (ko'p darajali guruh → matritsa — keng ko'rinish). stack/unstack — indeks↔ustun (MultiIndex). Almashtirish. Guruh bilan.
2.5. aggfunc (agregatsiya)
aggfunc (agregatsiya) — pivot_table ichida funksiya: aggfunc="sum" (jami — standart mean), aggfunc="mean" (o'rtacha), aggfunc="count" (soni), aggfunc=["sum", "mean"] (ko'p). Sabab: pivot'da takror bo'lsa (bir shahar-oy juftligida ko'p qator — 3.8 groupby kabi) — aggfunc yig'adi (sum, mean); pivot_table (agregatsiya — takror yig'adi) vs pivot (agregatsiyasiz — takror bo'lsa xato). aggfunc (funksiya — takror uchun), standart mean. pivot_table = groupby + unstack (guruhlab → matritsa). aggfunc — pivot agregatsiya (sum/mean). Takror. groupby kabi.
2.6. Pivot amaliyoti
Pivot amaliyoti: uzun vs keng (tahlil uzun, taqdimot keng); pivot_table (uzun→keng — index/columns/values/aggfunc); melt (keng→uzun — id_vars/var_name/value_name); stack/unstack (indeks↔ustun — MultiIndex); aggfunc (takror — sum/mean); fill_value (pivot NaN — 0); reset_index (pivot natija — MultiIndex/ustun). Tuzoqlar: pivot vs pivot_table (agregatsiya — takror), NaN (mos kelmagan katak — fill_value), MultiIndex (pivot natija — reset_index), melt id_vars (saqlanadigan). Amaliyot — pivot_table, melt, stack, aggfunc. Uzun↔keng. Shakl.
2.7. Pivot tuzoqlari
Pivot asosiy tuzoqlari: pivot vs pivot_table (pivot — agregatsiyasiz (takror bo'lsa xato — "duplicate entries"); pivot_table — aggfunc (takror yig'adi); takror bo'lsa pivot_table); NaN katak (pivot — mos kelmagan juftlik (shahar-oy yo'q) → NaN; fill_value=0); MultiIndex natija (pivot_table — index/columns MultiIndex bo'lishi mumkin; kirish qiyin; reset_index()); melt id_vars (saqlanadigan ustun — id_vars; unutsa barcha melt bo'ladi); aggfunc standart (pivot_table — standart mean (sum emas!); jami kerak bo'lsa aggfunc="sum"); stack/unstack chalkash (stack ustun→indeks, unstack indeks→ustun — teskari); ustun nom yo'qolish (pivot — values ustun nomi ketadi; columns qiymatlar ustun bo'ladi); katta pivot (ko'p columns — keng jadval, ko'p NaN; ehtiyot). Sabab: pivot shakl/agregatsiya/NaN nozik (pivot vs pivot_table, aggfunc, NaN — jim xato). Yechim: pivot_table (takror), fill_value, aggfunc="sum", reset_index. Tuzoqlar — pivot/pivot_table, NaN, aggfunc, MultiIndex.
2.8. Pivot — jadval shaklini o'zgartirish
Pivot asosiy g'oyasi — jadval shaklini o'zgartirish: ma'lumot ikki shaklda (uzun — kuzatish, tahlil qulay; keng — matritsa, taqdimot chiroyli); pivot/melt shakl orasida o'tish (bir ma'lumot — ikki ko'rinish). pivot_table (uzun → keng — guruhlab matritsa; Excel pivot; index/columns/values/aggfunc), melt (keng → uzun — ustun → qator; tahlil uchun), stack/unstack (indeks ↔ ustun — MultiIndex). Sabab: turli maqsad turli shakl talab qiladi (tahlil — uzun groupby; taqdimot — keng jadval; vosita — o'z shakli); shakl o'zgartirish moslik (ma'lumot bir, shakl turli). pivot_table = groupby + unstack (guruhlab → matritsa). Data Science'da (taqdimot — hisobot jadval; tahlil — uzun; moslik — vosita). Bu 3.8 (groupby) va 2.7 (reshape — NumPy shakl) davomi. Pivot — jadval shaklini o'zgartirish (pivot uzun→keng, melt keng→uzun). Shakl. Taqdimot/tahlil.
3. Tez ma'lumotnoma
import pandas as pd
# UZUN vs KENG:
# uzun (long) — har qator kuzatish (tahlil: groupby)
# keng (wide) — matritsa (taqdimot: o'qilishli)
# pivot_table (uzun → keng, Excel pivot):
df.pivot_table(index="shahar", columns="oy", values="savdo", aggfunc="sum")
# index — qator · columns — ustun · values — katak · aggfunc — funksiya
# (standart aggfunc — MEAN, sum emas!)
# melt (keng → uzun, ustun → qator):
keng.melt(id_vars="shahar", var_name="oy", value_name="savdo")
# stack / unstack (indeks ↔ ustun, MultiIndex):
df.stack() # ustun → indeks (keng → uzun)
df.unstack() # indeks → ustun (uzun → keng)
# NaN to'ldirish:
df.pivot_table(..., fill_value=0)
QOIDA: pivot_table takror (aggfunc) · standart mean · fill_value NaN · reset_indexPivot xulosasi
Pivot — jadval shaklini o'zgartirish (uzun ↔ keng)
Uzun (kuzatish, tahlil) vs keng (matritsa, taqdimot)
pivot_table — uzun → keng (index/columns/values/aggfunc, Excel pivot)
melt — keng → uzun (id_vars/var_name/value_name, ustun → qator)
stack/unstack — indeks ↔ ustun · aggfunc standart mean (sum emas)4. Batafsil misollar
Misollar real pandas bilan (deterministik) ishlaydi.
Misol 1 — pivot_table
"""pivot_table: uzun → keng (real pandas)."""
import pandas as pd
def main() -> None:
df = pd.DataFrame({
"shahar": ["T", "T", "S", "S"],
"oy": ["Yan", "Fev", "Yan", "Fev"],
"savdo": [100, 150, 200, 250],
})
print("=== 1. pivot_table ===")
keng = df.pivot_table(index="shahar", columns="oy", values="savdo", aggfunc="sum")
print(f" shakl: {keng.shape} (2 shahar × 2 oy)")
print("\n=== 2. Katak (T, Yan) ===")
print(f" T yanvar: {keng.loc['T', 'Yan']}")
print("\n=== 3. Ustunlar (oylar) ===")
print(f" ustunlar: {list(keng.columns)}")
print("\n=== 4. Shahar jami (qator yig'indi) ===")
print(f" T jami: {keng.loc['T'].sum()}")
print(" ⭐ pivot_table — uzun → keng (Excel pivot)")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. pivot_table ===
shakl: (2, 2) (2 shahar × 2 oy)
=== 2. Katak (T, Yan) ===
T yanvar: 100
=== 3. Ustunlar (oylar) ===
ustunlar: ['Fev', 'Yan']
=== 4. Shahar jami (qator yig'indi) ===
T jami: 250
⭐ pivot_table — uzun → keng (Excel pivot)Nima ko'rsatdi: 2.2-bo'lim.
Misol 2 — melt
"""melt: keng → uzun (real pandas)."""
import pandas as pd
def main() -> None:
keng = pd.DataFrame({
"shahar": ["T", "S"],
"Yan": [100, 200],
"Fev": [150, 250],
})
print("=== 1. melt (keng → uzun) ===")
uzun = keng.melt(id_vars="shahar", var_name="oy", value_name="savdo")
print(f" qatorlar: {len(uzun)} (2 shahar × 2 oy)")
print("\n=== 2. Ustunlar ===")
print(f" ustunlar: {list(uzun.columns)}")
print("\n=== 3. Endi groupby mumkin ===")
print(f" shahar jami: {uzun.groupby('shahar')['savdo'].sum().to_dict()}")
print("\n=== 4. Teskari (pivot) ===")
qayta = uzun.pivot_table(index="shahar", columns="oy", values="savdo")
print(f" qayta keng: {qayta.shape}")
print(" ⭐ melt — keng → uzun (tahlil uchun)")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. melt (keng → uzun) ===
qatorlar: 4 (2 shahar × 2 oy)
=== 2. Ustunlar ===
ustunlar: ['shahar', 'oy', 'savdo']
=== 3. Endi groupby mumkin ===
shahar jami: {'S': 450, 'T': 250}
=== 4. Teskari (pivot) ===
qayta keng: (2, 2)
⭐ melt — keng → uzun (tahlil uchun)Nima ko'rsatdi: 2.3-bo'lim.
Misol 3 — aggfunc
"""aggfunc: agregatsiya (real pandas)."""
import pandas as pd
def main() -> None:
df = pd.DataFrame({
"shahar": ["T", "T", "T", "S"],
"oy": ["Yan", "Yan", "Fev", "Yan"],
"savdo": [100, 50, 150, 200],
})
print("=== 1. sum (takror yig'iladi) ===")
p_sum = df.pivot_table(index="shahar", columns="oy", values="savdo", aggfunc="sum")
print(f" T yanvar (100+50): {p_sum.loc['T', 'Yan']}")
print("\n=== 2. mean ===")
p_mean = df.pivot_table(index="shahar", columns="oy", values="savdo", aggfunc="mean")
print(f" T yanvar o'rtacha: {p_mean.loc['T', 'Yan']}")
print("\n=== 3. count ===")
p_count = df.pivot_table(index="shahar", columns="oy", values="savdo", aggfunc="count")
print(f" T yanvar soni: {p_count.loc['T', 'Yan']}")
print("\n=== 4. fill_value (NaN → 0) ===")
p_fill = df.pivot_table(index="shahar", columns="oy", values="savdo",
aggfunc="sum", fill_value=0)
print(f" S fevral (yo'q → 0): {p_fill.loc['S', 'Fev']}")
print(" ⭐ aggfunc — takror yig'ish (sum/mean/count)")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. sum (takror yig'iladi) ===
T yanvar (100+50): 150.0
=== 2. mean ===
T yanvar o'rtacha: 75.0
=== 3. count ===
T yanvar soni: 2.0
=== 4. fill_value (NaN → 0) ===
S fevral (yo'q → 0): 0
⭐ aggfunc — takror yig'ish (sum/mean/count)Nima ko'rsatdi: 2.5-bo'lim.
Misol 4 — stack/unstack
"""stack va unstack (real pandas)."""
import pandas as pd
def main() -> None:
df = pd.DataFrame({"a": [1, 2], "b": [3, 4]}, index=["x", "y"])
print("=== 1. stack (ustun → indeks) ===")
stacked = df.stack()
print(f" stacked uzunlik: {len(stacked)} (2×2)")
print("\n=== 2. unstack (qayta keng) ===")
unstacked = stacked.unstack()
print(f" unstacked shakl: {unstacked.shape}")
print("\n=== 3. Asl bilan bir xil ===")
print(f" bir xil: {df.equals(unstacked)}")
print("\n=== 4. groupby + unstack ===")
d2 = pd.DataFrame({"g": ["A", "A", "B"], "k": ["x", "y", "x"], "v": [1, 2, 3]})
natija = d2.groupby(["g", "k"])["v"].sum().unstack(fill_value=0)
print(f" guruh matritsa shakl: {natija.shape}")
print(" ⭐ stack/unstack — indeks ↔ ustun")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. stack (ustun → indeks) ===
stacked uzunlik: 4 (2×2)
=== 2. unstack (qayta keng) ===
unstacked shakl: (2, 2)
=== 3. Asl bilan bir xil ===
bir xil: True
=== 4. groupby + unstack ===
guruh matritsa shakl: (2, 2)
⭐ stack/unstack — indeks ↔ ustunNima ko'rsatdi: 2.4-bo'lim.
5. To'g'ri va noto'g'ri tushunishlar
| Noto'g'ri fikr | To'g'risi |
|---|---|
| "bir shakl yetarli" | Uzun (tahlil), keng (taqdimot) |
| "pivot = pivot_table" | pivot agregatsiyasiz (takror xato) |
| "aggfunc standart sum" | mean (sum emas!) |
| "pivot NaN yo'q" | Mos kelmagan → NaN (fill_value) |
| "melt id_vars keraksiz" | Saqlanadigan ustun |
| "keng har doim yaxshi" | Tahlil — uzun qulay |
| "stack = unstack" | Teskari (ustun↔indeks) |
| "pivot natija oddiy" | MultiIndex (reset_index) |
6. Keng tarqalgan xatolar va yechimlari
1. pivot vs pivot_table
df.pivot(index="a", columns="b", values="c") # takror → xato # ⚠️
df.pivot_table(index="a", columns="b", values="c", aggfunc="sum") # ✅2. aggfunc standart
df.pivot_table(index="a", columns="b", values="c") # mean! # ⚠️
df.pivot_table(..., aggfunc="sum") # jami # ✅3. NaN katak
df.pivot_table(...) # mos kelmagan → NaN # ⚠️
df.pivot_table(..., fill_value=0) # NaN → 0 # ✅4. MultiIndex
p = df.pivot_table(...) # MultiIndex (kirish qiyin) # ⚠️
p.reset_index() # oddiy ustun # ✅5. melt id_vars
df.melt() # hamma ustun melt (shahar ham) # ⚠️
df.melt(id_vars="shahar") # shahar saqlanadi # ✅6. stack/unstack chalkash
df.stack() # ustun → indeks (keng → uzun) # ⚠️
df.unstack() # indeks → ustun (uzun → keng) # ✅7. Katta pivot
df.pivot_table(columns="id") # ko'p ustun (id million) # ⚠️
# columns kam noyob qiymatli ustun bo'lsin # ✅7. Integratsiya — bu bilim qayerda kerak bo'ladi
- 3.8-dars (o'tilgan): groupby (pivot_table = groupby + unstack)
- 2.7-dars (o'tilgan): reshape (NumPy shakl)
- 5-qism: Vizualizatsiya (keng — heatmap)
- 6-qism: Tozalash (shakl to'g'rilash)
- 4-qism: Statistika (pivot — solishtirish)
8. Eng yaxshi amaliyotlar
Uzun — tahlil, keng — taqdimot.
pivot_table— takror (aggfunc).aggfunc="sum"— jami (standart mean).fill_value=0— NaN to'ldirish.melt— keng → uzun (id_vars).reset_index— pivot natija (MultiIndex).stack/unstack— indeks ↔ ustun.Pivot — jadval shaklini o'zgartirish.
9. Amaliy topshiriq
Vazifa 1: Bashorat qiling
1. # uzun shakl nima?
2. # keng shakl nima?
3. # qaysi tahlil uchun?
4. # pivot_table nima?
5. # index/columns/values?
6. # aggfunc standart?
7. # pivot vs pivot_table?
8. # melt nima?
9. # id_vars nima?
10. # stack/unstack?
11. # pivot NaN?
12. # nega shakl muhim?Javoblar
- Har qator kuzatish
- Matritsa
- Uzun (tahlil), keng (taqdimot)
- Uzun → keng (guruhlab jadval)
- qator/ustun/katak
- mean (sum emas)
- pivot agregatsiyasiz (takror xato)
- Keng → uzun (ustun → qator)
- Saqlanadigan ustun
- indeks ↔ ustun (teskari)
- Mos kelmagan → NaN (fill_value)
- Turli maqsad turli shakl (moslik)
Vazifa 2: Xatolarni tuzating
1. df.pivot(index="a", columns="b", values="c") # takror
2. df.pivot_table(...) # jami kerak
3. df.pivot_table(...) # NaN bor
4. p = df.pivot_table(...) # MultiIndex
5. df.melt() # shahar saqlansinJavoblar
1. pivot_table(..., aggfunc="sum")
2. aggfunc="sum"
3. fill_value=0
4. p.reset_index()
5. df.melt(id_vars="shahar")Vazifa 3: Uzun vs keng
Modellang:
- Uzun
- Keng
- Tahlil
- Taqdimot
Vazifa 4: pivot_table
Modellang:
- index
- columns
- values
- aggfunc
Vazifa 5: melt
Modellang:
- id_vars
- var_name
- value_name
- Teskari
Vazifa 6: stack
Modellang:
- stack
- unstack
- Indeks↔ustun
- MultiIndex
Vazifa 7: O'ylash
Bir xil ma'lumot "uzun" (tahlil uchun) va "keng" (taqdimot uchun) shaklda bo'lishi mumkin, va biz ular orasida o'tamiz. Nima uchun tahlil uchun uzun shakl qulay (groupby, filtr), taqdimot uchun keng shakl chiroyli, va bu qanday qilib "ma'lumot bir xil, lekin ko'rinish maqsadga bog'liq" degan muhim tushunchani ko'rsatadi?
Javob
Qisqa javob: Bir ma'lumot uzun (tahlil) va keng (taqdimot) shaklda; uzun tahlil uchun qulay, keng taqdimot uchun chiroyli, chunki: (1) uzun — har kuzatish mustaqil — uzun shaklda har qator bir kuzatish (shahar, oy, savdo — to'liq); groupby oson (ustun bo'yicha guruh — shahar; har kuzatish — bir qator), filtr oson (shart — qatorlar), amal ustun bo'yicha (3.2 — ustun-markaziy); uzun mashina uchun (dastur — qator-qator ishlaydi); (2) keng — matritsa, ko'z uchun — keng shaklda matritsa (shahar × oy — katak savdo); solishtirish oson (bir qatorda shaharning barcha oylari — trend ko'rinadi; ustunda oyning barcha shaharlari); inson matritsa o'qiydi (Excel — keng; taqdimot); keng inson uchun (ko'z — solishtirish, naqsh); (3) maqsad farqi — tahlil (mashina — groupby, filtr; uzun), taqdimot (inson — o'qish, solishtirish; keng). "Nega 'ma'lumot bir, ko'rinish maqsadga bog'liq'": (a) ma'lumot o'zgarmaydi — uzun/keng bir xil ma'lumot (savdo qiymatlar o'sha — faqat tashkil boshqa; pivot/melt — o'zgartirish, yo'qotish yo'q); (b) maqsad ko'rinishni tanlaydi — tahlil (uzun — dastur qulay), taqdimot (keng — inson qulay); bir ma'lumot turli maqsad (turli shakl); (c) moslashuvchanlik — pivot/melt o'tish (maqsadga — shakl o'zgartirish; bir ma'lumot, ikki ko'rinish); (d) vosita talab — ba'zi vosita uzun (groupby, ML — uzun/tidy), ba'zi keng (heatmap, Excel — keng); shakl vositaga mos. "Tidy data" (uzun — tahlil standarti): har o'zgaruvchan ustun, har kuzatish qator (uzun — dastur uchun toza); keng (taqdimot — inson). Saboqlar: uzun kuzatish (mashina — groupby/filtr); keng matritsa (inson — solishtirish); ma'lumot bir (shakl o'zgaradi — yo'qotish yo'q); maqsad ko'rinish (tahlil uzun, taqdimot keng). To'g'ri: tahlil — uzun (groupby); taqdimot — keng (pivot_table); o'tish (pivot/melt). Muvozanat: mashina (uzun — tahlil) + inson (keng — taqdimot) — ikki auditoriya. Bu Data Science tushunchasi (ma'lumot bir — ko'rinish maqsadga; shakl o'zgartirish — moslik); "tidy data" (uzun — tahlil asosi). Pivot/melt — shakl vositasi (bir ma'lumot, maqsadga mos ko'rinish).
1. Nega uzun tahlil uchun
- Har qator kuzatish (mustaqil — to'liq)
- groupby/filtr oson (ustun/shart)
- Mashina uchun (qator-qator)
2. Nega keng taqdimot uchun
- Matritsa (shahar × oy — katak)
- Solishtirish oson (qator/ustun — trend)
- Inson uchun (ko'z — o'qish)
3. "Ma'lumot bir, ko'rinish maqsadga"
- Ma'lumot o'zgarmaydi (uzun/keng — bir xil)
- Maqsad ko'rinish tanlaydi (tahlil/taqdimot)
- Moslashuvchanlik (pivot/melt — o'tish)
- Vosita talab (uzun/keng — mos)
4. Uzun vs keng
| Uzun | Keng |
|---|---|
| Kuzatish (qator) | Matritsa |
| Mashina (groupby) | Inson (ko'z) |
| Tahlil | Taqdimot |
5. Saboqlar
- Uzun kuzatish (mashina — groupby)
- Keng matritsa (inson — solishtirish)
- Ma'lumot bir (shakl o'zgaradi)
- Maqsad ko'rinish (tahlil/taqdimot)
6. Xulosa
- Uzun tahlil (groupby/filtr — mashina)
- Keng taqdimot (matritsa — inson)
- Ma'lumot bir (ko'rinish maqsadga)
- Pivot/melt — shakl vositasi (moslik)
Nimani mustahkamlaydi: 2.1, 2.8-bo'limlar.
Xulosa
Bu darsda pivot va reshape'ni o'rgandik.
Eng muhim uch fikr:
Uzun/keng va pivot_table. Uzun vs keng — uzun (long — har qator bir kuzatish; tahlil qulay — groupby, filtr), keng (wide — matritsa; taqdimot chiroyli — o'qilishli).
pivot_table— uzun → keng (Excel pivot):index(qator),columns(ustun),values(katak),aggfunc(funksiya — takror yig'adi; standart mean, sum emas!); guruhlab matritsa.melt va stack.
melt— keng → uzun (ustun → qator):id_vars(saqlanadigan),var_name(ustun nomlari),value_name(qiymatlar); pivot teskarisi (tahlil uchun). stack/unstack — indeks ↔ ustun (stackustun→indeks;unstackindeks→ustun; MultiIndex — groupby ko'p ustun bilan).Shakl o'zgartirish. aggfunc (pivot takror — sum/mean/count), fill_value (NaN → 0). Pivot — jadval shaklini o'zgartirish (uzun ↔ keng; bir ma'lumot — ikki ko'rinish); ma'lumot bir, ko'rinish maqsadga bog'liq (tahlil — uzun/mashina; taqdimot — keng/inson).
pivot_table= groupby + unstack. Data Science'da (taqdimot — hisobot; tahlil — uzun; "tidy data"). Tuzoqlar: pivot vs pivot_table (takror — aggfunc), aggfunc standart mean, NaN (fill_value), MultiIndex (reset_index), melt id_vars.
Keyingi darsda Pandas amaliy loyihani bajaramiz: butun Pandas bilimini (o'qish, tozalash, filtr, guruhlash, birlashtirish) real ma'lumot tahlilida qo'llab — 3-qismni yakunlaymiz.
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!