Dataframe — row va columnlardan iborat, har column ma’lum data type’ga ega bo‘lishi mumkin bo‘lgan ikki o‘lchovli ma’lumot tuzilmasi. U statistik hisoblash, data cleaning, tahlil, machine learning va ETL jarayonlarida ishlatiladi.
Dataframe spreadsheet yoki relational table’ga o‘xshaydi, ammo u dasturlash muhiti ichida filter, join, aggregation va transformation amallarini bajarish uchun mo‘ljallangan.
Row va column
Dataframe rowlari observation yoki recordlarni ifodalaydi.
Columnlar attribute yoki o‘lchovlarni ifodalaydi.
Misol:
| id | name | age | region |
|---|---|---|---|
| 1 | Farrukh | 30 | UZ |
| 2 | Ali | 27 | UZ |
Har columnning type’i alohida bo‘lishi mumkin.
Schema
Dataframe schema quyidagilarni saqlaydi:
Type’lar:
- integer;
- floating point;
- string;
- boolean;
- date;
- timestamp;
- category;
- nested structure.
Schema aniq bo‘lsa xatolar erta aniqlanadi.
Index
Ayrim dataframe kutubxonalarida row index mavjud.
bo‘lishi mumkin.
Index relational database primary key bilan mutlaqo bir xil emas.
Takroriy index qiymatlariga ruxsat berilishi mumkin.
Column selection
Kerakli columnlar tanlanadi:
name, region
Bu projectionga o‘xshaydi.
Katta dataframe’da keraksiz columnlarni erta olib tashlash memory sarfini kamaytiradi.
Row filtering
Boolean shart orqali rowlar tanlanadi.
Misol:
age >= 18
region == "UZ"
Bir nechta shart operator precedence va null semantikasi bilan yoziladi.
Filter natijasi yangi dataframe yoki viewga o‘xshash obyekt bo‘lishi mumkin.
Vectorized operation
Column ustidagi amal har row uchun qo‘lda loop yozmasdan bajariladi.
Masalan:
total = price * quantity
Vectorized implementation compiled code yoki columnar memory orqali tez ishlaydi.
Row-by-row callback katta datasetda sekin bo‘lishi mumkin.
Missing value
Yo‘q qiymatlar:
- null;
- NaN;
- None;
- maxsus missing marker
bilan ifodalanishi mumkin.
Har type va library missing qiymatni boshqacha boshqaradi.
Amallar:
- drop;
- fill;
- interpolate;
- flag;
- impute.
Missing qiymatni nolga almashtirish business ma’noni buzishi mumkin.
Type conversion
CSVdan o‘qilgan son string bo‘lib qolishi mumkin.
Type conversion:
- integer;
- decimal;
- date;
- category;
- boolean
ga o‘tkazadi.
Invalid qiymatlar error, null yoki quarantinega yuboriladi.
Silent conversion noto‘g‘ri natija yaratishi mumkin.
Sorting
Bir yoki bir nechta column bo‘yicha sort qilinadi.
region ascending
amount descending
Barqaror sort teng keylar tartibini saqlashi mumkin.
Katta data sort uchun memory yoki disk spill talab qiladi.
Grouping
group byga o‘xshash amal rowlarni key bo‘yicha guruhlaydi.
Masalan:
region → total sales
Keyin:
- sum;
- count;
- mean;
- min;
- max;
- custom aggregate
bajariladi.
Join va merge
Ikki dataframe common key bo‘yicha birlashtiriladi.
Turlari:
- inner;
- left;
- right;
- outer.
Join key type’lari mos bo‘lishi kerak.
Duplicate keylar natijada rowlar sonini ko‘paytirishi mumkin.
Reshape
Data wide va long formatlar orasida o‘zgartiriladi.
Wide format
Har o‘lchov alohida column.
Long format
O‘lchov nomi va qiymati rowlarda.
Pivot va meltga o‘xshash amallar visualization hamda statistik model uchun kerakli shaklni yaratadi.
Apply
Custom function row yoki columnga qo‘llanishi mumkin.
Bu moslashuvchan, ammo vectorized operationga qaraganda sekinroq.
Apply ichida tashqi API yoki database query bajarish N+1 muammosi yaratadi.
Copy va view
Ba’zi operation data’ni nusxalaydi, boshqalari original bufferga view qaytaradi.
View ustidagi update original dataframe’ga ta’sir qilishi mumkin.
Copy-on-write yoki immutable model libraryga bog‘liq.
Memory profiling muhim.
Memory layout
Columnar dataframe har columnni contiguous memory’da saqlashi mumkin.
Bu:
uchun qulay.
String va object columnlar ko‘proq pointer va heap ishlatishi mumkin.
Lazy evaluation
Distributed dataframe tizimlari operationlarni darhol bajarmasdan execution graph yaratadi.
Action chaqirilganda optimizer:
bilan plan tuzadi.
Distributed dataframe
Data bitta kompyuter memory’siga sig‘masa partitionlarga bo‘linadi.
Operationlar workerlar orasida parallel bajariladi.
Join va group by shuffle talab qilishi mumkin.
Data skew bir workerga ortiqcha yuk beradi.
Input va output
Dataframe quyidagi formatlardan o‘qilishi mumkin:
Schema inference qulay, ammo katta file va aralash type’da noto‘g‘ri xulosa chiqarishi mumkin.
Production pipeline explicit schema ishlatadi.
Duplicate row
Dataframe ichida aynan bir xil yoki business key bo‘yicha takrorlangan rowlar bo‘lishi mumkin.
Deduplication oldidan qaysi row saqlanishi aniqlanadi:
- eng yangi;
- eng to‘liq;
- eng ishonchli source;
- birinchi kelgan.
Faqat barcha columnlar bo‘yicha duplicate olib tashlash business duplicate’ni topmasligi mumkin.
Chained assignment
Ayrim dataframe kutubxonalarida filter natijasiga update berish original data yoki vaqtinchalik nusxaga ta’sir qilishi noaniq bo‘lishi mumkin.
Explicit selection va assignment ishlatiladi.
Bu yashirin copy, kutilmagan o‘zgarmaslik va warninglarni kamaytiradi.
Export
Dataframe faylga yozilganda index, timezone, null, decimal va encoding qoidalari saqlanishi kerak.
CSV type metadata’sini yo‘qotadi, columnar format esa schema va compressionni yaxshiroq saqlashi mumkin.
Bog‘liq tushunchalar
Tabular data, Row, Column, Schema, Vectorization, Missing value, Group by, Join, Pivot, Dataset, Data analysis