Satrli va ierarxik formatlar, Medallion arxitekturasi hamda Pandas amaliyoti
10-sinfBI & ML1-hafta · 3-darsSatrli saqlash, ajratgichlar (delimiters), afzalliklari va encoding muammolari
Kalit-qiymat, ichma-ich (nested) obyektlar va Web API larning ma'lumot uzatish standarti
Data Engineering loyihasida raw, bronze, silver va gold papkalarining vazifasi
Ma'lumotlar formati tizimning qanchalik tez ishlashi, diskda qancha joy egallashi va tarmoqda qanday tezlikda uzatilishini belgilab beradi.
Noto'g'ri tanlangan format server xarajatlarini oshiradi va pipeline jarayonini sekinlashtiradi.
Jadval ko'rinishidagi ma'lumotlar uchun CSV qulay bo'lsa, murakkab ichma-ich tuzilmalar uchun JSON zarur bo'ladi.
Professional Data Engineer har bir vazifaga mos formatni to'g'ri tanlay bilishi shart.
Oddiy matn (plain text) shaklida jadval ma'lumotlarini saqlash standarti:
,), nuqta-vergul (;) yoki tabulyatsiya (\t) bilan ajratiladi;maktab_id,nomi,viloyat,oquvchilar
101,1-IDUM,Toshkent,1250
102,5-maktab,Samarqand,890
103,12-maktab,Andijon,1100
Inson tomonidan oddiy Bloknotda ham o'qilishi mumkin bo'lgan yengil ko'rinish.
Agar matn ichida vergul bo'lsa:
101,Alisher Navoiy nomidagi, 1-maktab,Toshkent
Dastur 3 ta ustun o'rniga 4 ta ustun ko'radi va ma'lumotlar siljib ketadi!
Yechim: Matnni qo'shtirnoqqa olish yoki nuqta-vergul (;) ishlatish.
Eski Windows va Excel tizimlari cp1251 dan foydalanadi.
UnicodeDecodeError: 'utf-8' codec can't decode...
Natijada o'zbekcha yoki ruscha harflar tushunarsiz belgilarga aylanadi.
Yechim: encoding='cp1251' ko'rsatish.
Kalit-qiymat (Key-Value) va massivlar asosidagi zamonaviy standart:
{
"maktab_id": 101,
"nomi": "1-IDUM",
"joylashuv": {
"viloyat": "Toshkent",
"shahar": "Chilonzor"
},
"sinflar": ["10-A", "10-B", "11-A"]
}
Katta jadvalli eksportlar va hisobotlar uchun...
bosingOddiy va tezkor almashishda!
Ma'lumotlar qat'iy satr va ustunlarga ega bo'lsa, Excel yoki Power BI ga tezkor yuklash kerak bo'lganda CSV eng to'g'ri tanlovdir.
Web servislar va noaniq sxemalar uchun...
bosingMoslashuvchan API almashinuvida!
Har bir foydalanuvchida turlicha ma'lumotlar bor bo'lsa, ichma-ich ro'yxatlar mavjud bo'lganda va veb-saytlar bilan bog'lanishda JSON qo'llaniladi.
maktab-pipeline/
├── data/
│ ├── raw/ # Asl xom fayllar
│ ├── bronze/ # Minimal tekshirilgan
│ ├── silver/ # Tozalangan data
│ └── gold/ # Yakuniy KPI/Martlar
├── src/ # Python pipeline kodi
└── logs/ # Xatolar jurnali
Maktab statistikasi CSV va JSON fayllari data/raw/ papkasiga yuklanadi.
Pandas orqali shape, info() va null qiymatlar tekshiriladi.
Xatolar tuzatilib, tozalangan ma'lumot data/silver/ papkasiga saqlanadi.
import pandas as pd
# CSV faylni o'qish
df = pd.read_csv('data/raw/maktablar.csv', sep=',')
# Birlamchi tahlil (Profiling)
print(f"Jadval shakli: {df.shape}") # (qatorlar, ustunlar)
print("\nDastlabki 3 ta satr:")
print(df.head(3))
# Ma'lumot turlari va xotira iste'moli
print("\nUstunlar va turlar:")
print(df.info())
Windows yoki eski Excel da tayyorlangan fayllarda UnicodeDecodeError chiqishi mumkin.
Dastur kirill harflarini UTF-8 da o'qiy olmagani uchun to'xtaydi.
try:
df = pd.read_csv(
'data/raw/maktablar.csv',
encoding='utf-8'
)
except UnicodeDecodeError:
# Xato bo'lsa cp1251 bilan ochamiz
df = pd.read_csv(
'data/raw/maktablar.csv',
encoding='cp1251'
)
print("Fayl muvaffaqiyatli ochildi!")
[
{
"maktab": "1-IDUM",
"direktor": {
"ism": "Alisher",
"familiya": "Qodirov"
}
}
]
Agar oddiy pd.read_json() qilinsa, direktor ustunida butun lug'at saqlanib qoladi.
BI va SQL uchun bitta ustunda lug'at emas, alohida ustunlar kerak:
maktab: "1-IDUM"direktor.ism: "Alisher"direktor.familiya: "Qodirov"Buni qanday bajaramiz? → json_normalize()
import json
import pandas as pd
# 1. JSON ma'lumotni yuklaymiz
with open('data/raw/maktablar.json', 'r', encoding='utf-8') as f:
data = json.load(f)
# 2. Ichma-ich tuzilmani tekis jadvalga aylantiramiz
df_tekis = pd.json_normalize(data)
print("--- Tekislangan ustunlar ---")
print(df_tekis.columns.tolist())
# Natijani Silver qatlamiga saqlaymiz
df_tekis.to_csv('data/silver/maktablar_tekis.csv', index=False)
print("\nSilver qatlamiga muvaffaqiyatli yozildi.")
Jadvalning o'lchamini bilish:
(1000, 12)
1000 ta qator va 12 ta ustun mavjudligini ko'rsatadi.
Bo'sh qiymatlarni hisoblash:
viloyat: 0
oquvchilar: 5
Completeness (To'liqlik) buzilgan kataklarni sanaydi.
Duplikatlarni topish:
df.duplicated().sum()
Takroriy qatorlar sonini bir zumda aniqlaydi.
Ichma-ich (nested) JSON obyektlarini 2D jadval ustunlariga tekislash uchun qaysi Pandas funksiyasi qo'llaniladi?
Parquet va Ustunli (Columnar) saqlash
Snappy siqish, CSV va Parquet taqqoslovi, Schema saqlanishi hamda Relatsion ma'lumotlar bazalariga (RDBMS / SQLite) kirish.
Fayllarni o'qish, JSON tekislash yoki papka strukturalari bo'yicha savollarni muhokama qilamiz.
Muhammad al-Xorazmiy vorislari tizimi
10-sinf: BI va Machine Learning kursi