Gruplama, Özetleme ve Basit Görselleştirme

Bu derste ne yapacağız?

Bu kursun son dersinde, elimizdeki tabloyu tek tek satır satır okumak yerine, ona gruplar hâlinde sorular sorabileceğiz. Örneğin "her şehirdeki ortalama satış ne kadar?" ya da "her ürün kategorisinden toplam ne kadar gelir elde edildi?" gibi soruların cevabını bulacağız. Ayrıca bulduğumuz sayıları basit bir grafik hâline getirerek göz ile daha kolay okunur şekle sokacağız.

Bu derse başlamadan önce bir önceki derste öğrendiğiniz DataFrame kavramını, sütun seçme işlemlerini ve filtreleme mantığını hatırlıyor olmanız gerekir. Bilgisayarınızda Python'ın kurulu olması ve pandas ile matplotlib kütüphanelerinin yüklenmiş olması gerekir. Arayüz görünümleri kullandığınız programa (örneğin Jupyter Notebook veya farklı bir kod düzenleyici) göre değişebilir; bu yüzden burada anlatılanları kendi ortamınızdaki karşılıklarıyla eşleştirerek ilerleyin.

Kavram

Bir sınıf öğretmeninin elinde tüm öğrencilerin not listesi olduğunu düşünün. Öğretmen tek tek her öğrencinin notunu okumak yerine, "kız öğrencilerin ortalaması kaç, erkek öğrencilerin ortalaması kaç?" diye sorabilir. İşte bu, verideki bir özelliğe göre (cinsiyet) veriyi gruplara ayırıp, her grup için ayrı ayrı bir hesaplama (ortalama) yapmaktır. Pandas kütüphanesinde bu işleme groupby (gruba göre) denir.

groupby işlemi tek başına bir sonuç göstermez; her zaman yanında bir özetleme fonksiyonu ister. En sık kullanılan özetleme fonksiyonları şunlardır:

  • mean(): grubun ortalamasını verir.
  • sum(): grubun toplamını verir.
  • count(): grupta kaç kayıt olduğunu sayar.
  • max() ve min(): gruptaki en büyük ve en küçük değeri verir.

Sayısal özetleri çıkardıktan sonra bu bilgiyi bir grafiğe dönüştürmek, sonucu çok daha anlaşılır kılar. Bunun için Matplotlib adlı kütüphaneyi kullanacağız. Matplotlib, bir ressamın boş tuvale çizim yapması gibi çalışır: önce hangi verinin çizileceğini söylersiniz, sonra çizimi ekrana "gösterin" dersiniz.

Adım adım uygulama

Örnek olarak, farklı şehirlerdeki mağazaların satış tutarlarını içeren basit bir tablo kullanacağız.

  1. Kod dosyanızın en üstüne, gerekli kütüphaneleri çağıran şu satırları yazın:
    import pandas as pd
    import matplotlib.pyplot as plt
    Birinci satır pandas kütüphanesini pd kısa adıyla, ikinci satır ise matplotlib'in çizim aracını plt kısa adıyla projemize dahil eder.
  2. Örnek verimizi oluşturan şu kodu yazın:
    veri = {
        "sehir": ["Ankara", "Istanbul", "Ankara", "Izmir", "Istanbul", "Izmir"],
        "satis": [1200, 2500, 1800, 950, 3000, 1100]
    }
    df = pd.DataFrame(veri)
    Burada bir sözlük (dictionary) içinde şehir isimleri ve satış tutarları tanımlanır, ardından bu sözlük pd.DataFrame fonksiyonu ile bir tabloya dönüştürülüp df adlı değişkende saklanır.
  3. Tabloyu ekrana yazdırarak kontrol edin:
    print(df)
    Bu satır çalıştırıldığında altı satırlık küçük tablonuzu ekranda görürsünüz.
  4. Şimdi şehre göre gruplayıp ortalama satışı hesaplayın:
    ortalama_satis = df.groupby("sehir")["satis"].mean()
    print(ortalama_satis)
    groupby("sehir") satırları şehir adına göre gruplara ayırır; ["satis"] ifadesi sadece satış sütunuyla ilgilendiğimizi belirtir; mean() ise her grubun ortalamasını hesaplar. Sonuç olarak her şehir için tek bir ortalama satış değeri elde edersiniz.
  5. Toplam satışı görmek isterseniz mean() yerine sum() kullanın:
    toplam_satis = df.groupby("sehir")["satis"].sum()
    print(toplam_satis)
    Bu kez her şehrin satışlarının toplamını görürsünüz.
  6. Elde ettiğiniz özet sonucu bir çubuk grafiğe dönüştürün:
    toplam_satis.plot(kind="bar")
    plt.title("Sehirlere Gore Toplam Satis")
    plt.xlabel("Sehir")
    plt.ylabel("Toplam Satis")
    plt.show()
    plot(kind="bar") satırı, elimizdeki özet veriyi dikey çubuklardan oluşan bir grafiğe çevirir; title, xlabel ve ylabel satırları grafiğe başlık ve eksen isimleri ekler; plt.show() ise hazırlanan grafiği ekranda görüntüler.
  7. Kodun tamamını çalıştırın (kullandığınız programda genellikle Run düğmesine tıklayarak veya Çalıştır komutunu seçerek). Ekranda önce tablo, ardından özet sayılar, en sonunda da çubuk grafik belirmelidir.

Sık karşılaşılan sorunlar

Hata / BelirtiOlası NedenÇözüm
ModuleNotFoundError: No module named 'matplotlib'Matplotlib kütüphanesi bilgisayarınıza yüklenmemiş.Terminale veya komut satırına
pip install matplotlib
yazıp çalıştırın, ardından programı yeniden başlatın.
Grafik penceresi hiç açılmıyorplt.show() satırı unutulmuş ya da yanlış girinti ile yazılmış olabilir.Kodun en sonunda plt.show() satırının bulunduğundan ve diğer satırlarla aynı hizada olduğundan emin olun.
KeyError hatası (bir sütun adı bulunamıyor)groupby veya sütun seçiminde sütun adı yanlış yazılmış (büyük/küçük harf ya da yazım hatası).Tablodaki gerçek sütun adlarını görmek için print(df.columns) yazıp kontrol edin, ardından ismi birebir aynı şekilde kullanın.
Gruplama sonucu beklediğiniz gibi görünmüyorgroupby'dan sonra yanlış sütun seçilmiş veya yanlış özetleme fonksiyonu kullanılmış olabilir.Önce df.groupby("sutun_adi") ifadesinin doğru sütuna göre yapıldığını, sonra hangi özetleme fonksiyonunu (mean, sum, count) istediğinizi tekrar kontrol edin.
Grafikte çubuklar birbirine çok yakın veya isimler okunmuyorVarsayılan grafik boyutu küçük kalabilir.plt.show() satırından önce
plt.figure(figsize=(8,5))
ekleyerek grafiğin boyutunu büyütebilirsiniz.

Mini görev

Aşağıdaki adımları izleyerek kendi küçük analizinizi yapın:

  • En az üç farklı ürün kategorisi ve her kategori için üç veya dört satış tutarı içeren yeni bir sözlük oluşturun (örneğin "kategori" ve "satis" sütunları).
  • Bu sözlüğü bir DataFrame'e dönüştürün.
  • groupby kullanarak her kategorinin ortalama satışını hesaplayın ve ekrana yazdırın.
  • Aynı özet veriyi çubuk grafiğe dönüştürüp başlık ve eksen isimleri ekleyerek ekranda gösterin.

Kontrol listesi:

  • Tablo doğru şekilde oluşturuldu mu ve print(df) ile görüntülenebiliyor mu?
  • groupby satırı hatasız çalışıyor ve her kategori için bir sayı üretiyor mu?
  • Grafik penceresi açılıyor ve çubuklar kategorilere karşılık geliyor mu?
  • Grafikte başlık ve eksen isimleri okunabiliyor mu?

Kendini sına

1) Pandas'ta veriyi belirli bir sütuna göre gruplara ayırmak için hangi fonksiyon kullanılır?

2) Bir gruptaki değerlerin toplamını almak için hangi fonksiyon kullanılır: mean() mi yoksa sum() mu?

3) Matplotlib ile hazırlanan bir grafiği ekranda göstermek için hangi komut kullanılır?

4) groupby("sehir")["satis"].mean() ifadesi bize ne verir?

5) Bir grupta kaç tane kayıt (satır) olduğunu öğrenmek için hangi fonksiyon kullanılır?

Cevaplar

1) groupby() fonksiyonu kullanılır.

2) Toplam almak için sum() kullanılır; mean() ortalama hesaplar.

3) plt.show() komutu kullanılır.

4) Her şehir için satış sütununun ortalamasını verir.

5) count() fonksiyonu kullanılır.

Kapanış

Bu kursta Python ile veriyi okumaktan başlayıp DataFrame yapısını tanıdınız, sütun ve satır seçme ile filtreleme mantığını öğrendiniz ve son olarak bu derste verinizi gruplayıp özetleyerek basit ama etkili grafiklerle görselleştirmeyi gördünüz. Artık elinizdeki ham bir tabloyu anlamlı sorulara dönüştürüp cevaplarını hem sayısal hem görsel olarak sunabilecek temel bilgiye sahipsiniz. Bir sonraki adımınız, gerçek hayattan kendi ilginizi çeken bir veri seti bulup burada öğrendiğiniz adımları baştan sona kendi başınıza uygulamak olabilir.

Bu dersi kayıt olmadan izleyebilirsin. İlerlemeni kaydetmek, sertifika almak ve puan tablosuna girmek için ücretsiz üye ol: Kayıt Ol