1. Verilərin qruplaşdırılmasına giriş
Verilərin qruplaşdırılma prinsipi
Həyatda tez-tez obyektləri müəyyən xüsusiyyətlərə görə qruplaşdırırıq: kitablar kitablara, tərəvəzlər tərəvəzlərə, insanlar insanlara (yəni bu sizə məlumdur). Proqramlaşdırmada bu eyni şəkildə işləyir. Məlumatların qruplaşdırılması bizə böyük miqdarda məlumatları daha kiçik, idarə edilə bilən hissələrə bölməyə, sonradan onları təhlil etməyə imkan verir.
Bunun üçün pandas-da groupby
metodu istifadə olunur. Bu metod məlumatları qruplara bölməyə və onların hər biri üzərində müxtəlif əməliyyatlar aparmağa imkan verir. Məsələn, mağaza şöbələrinə satışları qruplaşdırıb, hər birinin ümumi gəlirini hesablaya bilərsiniz.
Bunun necə görünə biləcəyi ilə bağlı bir nümunə:
import pandas as pd
# Satış məlumatları ilə DataFrame yaratmaq
data = {'Şöbə': ['Qida', 'Texnika', 'Qida', 'Kitablar', 'Texnika'],
'Gəlir': [100, 200, 150, 50, 300]}
df = pd.DataFrame(data)
# Məlumatları şöbələr üzrə qruplaşdırırıq və ümumi gəliri hesablayırıq
qrup = df.groupby('Şöbə')['Gəlir'].sum()
print(qrup)
Qruplaşdırmanın tətbiq nümunələri
Qruplaşdırma, müxtəlif kateqoriyalar arasında məlumatları müqayisə etmək lazım olduqda xüsusilə faydalıdır. Məsələn, HR-da işləyirsinizsə və şirkətin müxtəlif şöbələrində orta maaşı öyrənmək istəsəniz, ya da marketinqdə çalışırsınızsa və hər bir məhsul üçün hansı ayda ən çox satış olduğunu bilmək istəsəniz. Bu tip məsələlər pandas-ın qruplaşdırma imkanları ilə əhəmiyyətli dərəcədə sadələşdirilir.
2. Aqreqat funksiyaların hesablanması
Aqreqat funksiyalara giriş
Aqreqat funksiyalar — bu xüsusi funksiyalardır ki, verilənlər qrupuna tətbiq olunur və bir dəyər qaytarır. Ən məşhur olanlar bunlardır: sum
(cəmi), mean
(orta məbləği) və count
(elementlərin sayı). Onlar çoxlu məlumatları daha sadə və başa düşülən metrikalara endirməyə imkan verir.
Aqreqat funksiyaların istifadəsi
Əvvəlki nümunədə toplamı necə hesablamaq lazım olduğunu gördük. İndi hər şöbədə orta məbləği və satış sayını necə hesablaya biləcəyimizi görək.
# Şöbələr üzrə orta gəliri hesablayırıq
orta = df.groupby('Şöbə')['Gəlir'].mean()
print(orta)
# Hər şöbənin satış sayını hesablayırıq
say = df.groupby('Şöbə')['Gəlir'].count()
print(say)
Aqreqatların hesablanmasına nümunələr
Tutaq ki, sizin istifadəçilərin saytın ziyarəti ilə bağlı məlumatlarınız var və hər həftə günü sayta orta hesabla neçə nəfərin daxil olduğunu anlamaq istəyirsiniz. Bu qruplaşdırma və mean
funksiyasından istifadə üçün klassik bir məsələdir.
data = {'Gün': ['B.e.', 'Ç.a.', 'Ç.', 'C.a.', 'C.', 'Ç.', 'Ç.a.'],
'Ziyarətlər': [120, 150, 170, 160, 180, 300, 220]}
df = pd.DataFrame(data)
# Günlər üzrə orta ziyarət sayını hesablayırıq
orta_ziyarət = df.groupby('Gün')['Ziyarətlər'].mean()
print(orta_ziyarət)
3. Praktiki iş
Məlumatların qruplaşdırılması və cəm hesabatı üzrə tapşırıq
Təsəvvür edin ki, satış məlumatlarınız məcmusu var. Tapşırıq: onları kateqoriyalara görə qruplaşdırın və ümumi satışı, sifarişin orta dəyərini və hər bir kateqoriyada sifarişlərin sayını hesablayın. Bu, sizə hansı məhsul kateqoriyalarının ən böyük mənfəəti gətirdiyini və harada potensial "qızıl damarlar"ın olduğunu anlamağa kömək edəcək.
data = {
'Kateqoriya': ['Elektronika', 'Geyim', 'Elektronika', 'Kitablar', 'Kitablar', 'Geyim'],
'Sifariş_sumu': [250, 100, 150, 200, 500, 300]
}
df = pd.DataFrame(data)
# Kateqoriyalara görə ümumi satışı hesablayırıq
cümlə = df.groupby('Kateqoriya')['Sifariş_sumu'].sum()
print(cümlə)
# Kateqoriyalara görə sifarişin orta dəyərini hesablayırıq
orta_dəyər = df.groupby('Kateqoriya')['Sifariş_sumu'].mean()
print(orta_dəyər)
# Kateqoriyalara görə sifarişlərin sayını hesablayırıq
sifariş_sayı = df.groupby('Kateqoriya')['Sifariş_sumu'].count()
print(sifariş_sayı)
Qruplaşdırma nəticələrinin müzakirəsi və məlumatların təhlili
Məlumatların qruplaşdırılması və cəmləmə hesabatları üzrə tapşırıqlar yerinə yetirildikdən sonra əldə olunan məlumatları təhlil etmək çox faydalıdır. Məsələn, "Kitablar" kateqoriyasının kiçik, lakin iri sifariş sayəsində ən yüksək sifariş məbləği olduğunu görə bilərsiniz. Yaxud "Geyim" kateqoriyasının ən çox sifarişə malik olduğunu, lakin sifarişin orta dəyərinin "Elektronika"dan aşağı olduğunu müşahidə edə bilərsiniz.
Belə təhlil biznes qərarlar qəbul etməyə kömək edə bilər, məsələn, sifarişlərin çox olduğu, lakin orta dəyərinin aşağı olduğu kateqoriyada orta sifariş həcmini artırmağa diqqət yetirmək.
4. Səhvlər və xüsusiyyətlər
Qruplaşdırma ilə işləyərkən ən çox rast gəlinən səhvlərdən biri aqreqat funksiyalar tətbiq edərkən dairəvi mötərizələri istifadə etməyi unutmaqdır. Məsələn, df.groupby('Kateqoriya').sum()
yazmaq əvəzinə df.groupby('Kateqoriya')['Sifaris_cemi'].sum()
yazmalısınız. Bundan əlavə, bəzən məlumatlarda olan boşluqlarla bağlı problemlər ortaya çıxır. Pandas, fillna()
kimi funksiyalar təklif edir, bu da itkin dəyərləri təyin edilmiş dəyərlərlə əvəz etməyə imkan verir, beləliklə hesablamalarda təhriflərin qarşısını almaq olar.
Bundan başqa, məlumatların tiplərinin düzgün olduğuna əmin olun. Bəzən rəqəmləri əhatə edən sütunlar mətn kimi oxuna bilər və belə məlumatları aqreqat etməyə çalışarkən səhvlər yaranar.
Əgər pandas ilə qruplaşdırma metodlarına daha dərindən baxmaq istəyirsinizsə, pandas-ın rəsmi sənədlərinə müraciət edin, burada daha ətraflı öyrənmə və nümunələr tapa bilərsiniz.
GO TO FULL VERSION