AXV

Ma’lumot Formatlari: CSV va JSON

Satrli va ierarxik formatlar, Medallion arxitekturasi hamda Pandas amaliyoti

10-sinfBI & ML1-hafta · 3-dars

Bugun nimani o'rganamiz?

CSV Formati

Satrli saqlash, ajratgichlar (delimiters), afzalliklari va encoding muammolari

JSON Formati

Kalit-qiymat, ichma-ich (nested) obyektlar va Web API larning ma'lumot uzatish standarti

Medallion Arxitekturasi

Data Engineering loyihasida raw, bronze, silver va gold papkalarining vazifasi

Format tanlash: Nega bu muhim?

Hajm va Tezlik

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.

Moslashuvchanlik vs Struktura

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.

CSV (Comma-Separated Values)

Satrli (Tabular) Saqlash

Oddiy matn (plain text) shaklida jadval ma'lumotlarini saqlash standarti:

  • Har bir yangi satr — bitta qator (record);
  • Ustunlar vergul (,), nuqta-vergul (;) yoki tabulyatsiya (\t) bilan ajratiladi;
  • Birinchi satrda ko'pincha ustun nomlari (header) joylashadi.

Namuna kodi

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.

CSV faylning ichki tuzilishi

maktab_id maktab_nomi viloyat oquvchilar 101 1-IDUM Toshkent 1250 102 5-maktab Samarqand 890 103 12-maktab Andijon 1100

CSV: Imkoniyatlar va Cheklovlar

Afzalliklari

  • Universal: Har qanday platforma (Excel, SQL, Python, R) ochadi;
  • Sodda va o'qiluvchan: Hech qanday murakkab kutubxona talab qilmaydi;
  • Yengil eksport: Ma'lumotlar bazasidan tezkor tushirib olish qulay.

Kamchiliklari

  • Schema yo'q: Ustun tipi (int, str, date) saqlanmaydi;
  • Siqilmagan: Katta hajmdagi ma'lumotlarda gigabaytlab joy egallaydi;
  • Delimiter xatolari: Matn ichidagi vergullar satrni buzadi;
  • Encoding muammolari: Turli kodlash tizimlari matnlarni buzadi.

CSV da 2 ta asosiy muammo

1. Delimiter to'qnashuvi

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.

2. Encoding (Kodlash) xatosi

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.

JSON (JavaScript Object Notation)

Ierarxik (Nested) Tuzilma

Kalit-qiymat (Key-Value) va massivlar asosidagi zamonaviy standart:

  • Daraxtsimon tuzilma (Tree structure);
  • Obyekt ichida yangi obyekt yoki ro'yxat joylashishi mumkin;
  • Web API'lar va server loglarining asosiy tili.

JSON namunasi

{
  "maktab_id": 101,
  "nomi": "1-IDUM",
  "joylashuv": {
    "viloyat": "Toshkent",
    "shahar": "Chilonzor"
  },
  "sinflar": ["10-A", "10-B", "11-A"]
}

JSON: Daraxtsimon ierarxiya

Maktab Obyekti maktab_id: 101 nomi: "1-IDUM" joylashuv (Obyekt) viloyat: "Toshkent" sinflar (Array) ["10-A", "10-B"] tuman: "Chilonzor"

JSON: Imkoniyatlar va Cheklovlar

Afzalliklari

  • Moslashuvchan: Har bir qatorda bir xil ustunlar bo'lishi shart emas;
  • Ichma-ich tuzilma: Obyektlar va massivlarni bir joyda saqlaydi;
  • Internet tili: Hamma zamonaviy veb-saytlar va mobil ilovalar JSON orqali gaplashadi.

Kamchiliklari

  • BI uchun noqulay: SQL va Power BI bilan ishlash uchun tekislash (flattening) kerak;
  • Hajmning kattaligi: Kalit nomlari har bir yozuvda takrorlanadi;
  • Katta resurs: Parsing jarayoni ko'proq protsessor va xotira sarflaydi.

CSV vs JSON Taqqoslovi

CSV Formati

  • Tuzilma: 2D tekis jadval (satr va ustun);
  • Moslik: Tahliliy hisobotlar va eksportlar;
  • Hajm: Ixcham (faqat qiymatlar yoziladi);
  • Cheklov: Ichma-ich obyektlarni saqlab bo'lmaydi.

JSON Formati

  • Tuzilma: Daraxtsimon, ierarxik;
  • Moslik: Web API, mikroxizmatlar, ilovalar;
  • Hajm: Kattaroq (kalit nomlari takrorlanadi);
  • Cheklov: Jadvalga aylantirish uchun tekislash shart.

Qachon qaysi formatni tanlaymiz?

Qachon CSV tanlanadi?

Katta jadvalli eksportlar va hisobotlar uchun...

bosing

Oddiy 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.

Qachon JSON tanlanadi?

Web servislar va noaniq sxemalar uchun...

bosing

Moslashuvchan 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.

Medallion Arxitekturasi: Papkalar tartibi

Standart Loyiha Strukturasi

maktab-pipeline/
├── data/
│   ├── raw/      # Asl xom fayllar
│   ├── bronze/   # Minimal tekshirilgan
│   ├── silver/   # Tozalangan data
│   └── gold/     # Yakuniy KPI/Martlar
├── src/          # Python pipeline kodi
└── logs/         # Xatolar jurnali

Bosqichlar vazifasi

  • raw: Hech qachon o'zgartirilmaydigan xom fayllar;
  • bronze: Tizimga qabul qilingan dastlabki nusxa;
  • silver: Tozalangan, formati to'g'rilangan fayllar;
  • gold: Direktor va tahlilchilar uchun tayyor jadvallar.

Medallion Quvuri: Xom ma'lumotdan Oltin qatlamgacha

1. RAW Xom CSV / JSON O'zgartirilmaydi Asl haqiqat 2. BRONZE Qabul qilingan Minimal profiling Fayl arxivi 3. SILVER Tozalangan Normalizatsiya Null yo'qotilgan 4. GOLD Biznes ko'rsatkich KPI & Dashboard Data Marts

Pipeline amaliy qadamlari

1. Xom fayllarni joylashtirish

Maktab statistikasi CSV va JSON fayllari data/raw/ papkasiga yuklanadi.

2. O'qish va Tekshirish

Pandas orqali shape, info() va null qiymatlar tekshiriladi.

3. Tozalash va Saqlash

Xatolar tuzatilib, tozalangan ma'lumot data/silver/ papkasiga saqlanadi.

Pandas bilan CSV fayllarni o'qish

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())

Encoding muammosini hal qilish

Muammo sababi

Windows yoki eski Excel da tayyorlangan fayllarda UnicodeDecodeError chiqishi mumkin.

Dastur kirill harflarini UTF-8 da o'qiy olmagani uchun to'xtaydi.

Ishonchli Yechim

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!")

JSON bilan asosiy muammo: Ichma-ichlik

Ichma-ich JSON obyekti

[
  {
    "maktab": "1-IDUM",
    "direktor": {
      "ism": "Alisher",
      "familiya": "Qodirov"
    }
  }
]

Agar oddiy pd.read_json() qilinsa, direktor ustunida butun lug'at saqlanib qoladi.

Kerakli 2D Jadval

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()

json_normalize() mexanizmi

Nested JSON {"id": 101, "manzil": { "shahar": "Toshkent"}} json_normalize Tekislangan Jadval id manzil.shahar 101 Toshkent

Amaliy kod: 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.")

Pandas Profiling: 3 asosiy buyruq

df.shape

Jadvalning o'lchamini bilish:

(1000, 12)

1000 ta qator va 12 ta ustun mavjudligini ko'rsatadi.

df.isna().sum()

Bo'sh qiymatlarni hisoblash:

viloyat: 0
oquvchilar: 5

Completeness (To'liqlik) buzilgan kataklarni sanaydi.

df.duplicated()

Duplikatlarni topish:

df.duplicated().sum()

Takroriy qatorlar sonini bir zumda aniqlaydi.

Mini-test: Formatlar va vositalar

Ichma-ich (nested) JSON obyektlarini 2D jadval ustunlariga tekislash uchun qaysi Pandas funksiyasi qo'llaniladi?

To'g'ri: pd.json_normalize() ierarxik daraxtsimon JSON tuzilmasini satr va ustunli DataFrame ga aylantiradi.

1-hafta umumiy xulosalari

O'rganilgan mavzular

  • 1-dars: DIKW piramidasi, Data Engineer roli va Pipeline;
  • 2-dars: Data Architecture 6 qatlami, 7 Lifecycle bosqichi va Data Quality;
  • 3-dars: CSV va JSON formatlari, Medallion arxitekturasi va Pandas profiling.

Kelgusi haftada (2-hafta):

Parquet va Ustunli (Columnar) saqlash

Snappy siqish, CSV va Parquet taqqoslovi, Schema saqlanishi hamda Relatsion ma'lumotlar bazalariga (RDBMS / SQLite) kirish.

Savollar va munozara

Savollaringiz bormi?

Fayllarni o'qish, JSON tekislash yoki papka strukturalari bo'yicha savollarni muhokama qilamiz.

E'tiboringiz uchun rahmat!

Muhammad al-Xorazmiy vorislari tizimi

10-sinf: BI va Machine Learning kursi