• Yapay zeka soru ve sorunlarınızı uygun olan kategorilere açıp yanıt alabilirsiniz...

Pandas pivot ile tablo biçimi nasıl değiştirilir?

  • Konuyu Başlatan Konuyu Başlatan Garfield
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 1
  • Etiketler Etiketler
    veri bilimi

Garfield

YZF Admin
Yaş
40
Konum
YurtDışı
Katılım
27 Eki 2026
Konular
664
Mesajlar
689
AI Seviyesi
Yeni
Pandas’ta satırları sütunlara çevirerek tablo düzenini değiştirmek için pivot() veya aynı işi toplulaştırma yaparak gerçekleştirmek için pivot_table() kullanılır. Verinizde aynı satır-sütun birleşimi yalnızca bir kez bulunuyorsa pivot(), aynı birleşimde birden fazla kayıt varsa ve bunları toplamak gerekiyorsa pivot_table() uygundur. Sonuç, satır ve sütun etiketleri yeniden düzenlenmiş bir DataFrame olur.

Örnek veriyle pivot tablo oluşturma​

Aşağıdaki varsayımsal veride her kayıt bir satış bilgisini gösterir. urun sütununu satır, ay sütununu sütun ve tutar sütununu değer alanı yapacağız.

Python:
import pandas as pd

df = pd.DataFrame({
    "urun": ["Kalem", "Kalem", "Defter", "Defter"],
    "ay": ["Ocak", "Şubat", "Ocak", "Şubat"],
    "tutar": [120, 150, 300, 280]
})

sonuc = df.pivot(
    index="urun",
    columns="ay",
    values="tutar"
)

print(sonuc)

Bu kodun üreteceği tablo mantıksal olarak şöyledir:
urunOcakŞubat
Kalem120150
Defter300280
index="urun", satır başlıklarını; columns="ay", yeni sütunları; values="tutar" ise hücrelere yazılacak değerleri belirler. Orijinal tabloda her satış ayrı satırdayken, yeni tabloda her ürün tek satırda ve aylar ayrı sütunlarda yer alır.

pivot() ile pivot_table() arasındaki fark​

Yöntem seçimi, aynı urun ve ay birleşiminin veride kaç kez tekrarlandığına bağlıdır. Bu ayrım önemlidir; çünkü pivot() toplama yapmaz ve aynı hücreye birden fazla değer düşerse hata verir.
YöntemNe zaman kullanılır?Tekrarlanan kayıt durumunda
pivot()Her satır-sütun birleşimi tek bir değere karşılık geliyorsaGenellikle hata oluşur
pivot_table()Aynı birleşimde birden fazla kayıt varsaaggfunc ile toplama, ortalama veya başka bir toplulaştırma yapılır
Bu nedenle satış verilerinde aynı ürün ve ay için birden fazla satış satırı bulunabileceğini düşünüyorsanız pivot_table() daha güvenli seçimdir. Örneğin tutarları ürün ve aya göre toplamak için:

Python:
sonuc = df.pivot_table(
    index="urun",
    columns="ay",
    values="tutar",
    aggfunc="sum",
    fill_value=0
)

print(sonuc)

Burada aggfunc="sum" aynı hücreye düşen tutarları toplar. fill_value=0 ise hiç kayıt bulunmayan hücrelerin boş kalması yerine 0 görünmesini sağlar. Boş hücrenin “veri yok” anlamını korumasını istiyorsanız fill_value kullanmayın; sıfır, kaydın gerçekten sıfır olduğu anlamına gelebilir.

Birden fazla hesaplama yapmak​

Aynı pivot tabloda toplam ve ortalama gibi birden fazla hesaplama da oluşturabilirsiniz:

Python:
sonuc = df.pivot_table(
    index="urun",
    columns="ay",
    values="tutar",
    aggfunc=["sum", "mean"],
    fill_value=0
)

print(sonuc)

Bu durumda sütun başlıkları çok seviyeli olur. İlk seviye hesaplama adını (sum, mean), ikinci seviye ise ay adını içerir. Tek seviyeli sütun adlarına ihtiyaç duyarsanız sonucu sonradan yeniden adlandırabilirsiniz; ancak hangi hesaplamanın hangi sütuna ait olduğunu kaybetmemek için adlandırmayı açık yapmanız gerekir.

Eksik değerleri ve sütun adlarını düzenleme​

Pivot işlemi sonrasında bazı ürünlerde bazı aylar bulunmayabilir. Bu durumda ilgili hücre NaN olur. Eksik hücreleri sıfırla doldurmayı seçerseniz:

Python:
sonuc = sonuc.fillna(0)

Ancak bu işlem, eksik kaydı sıfır satış gibi yorumlamanıza neden olabilir. Eksik değerlerin anlamı önemliyse önce bunun “kayıt yok”, “bilinmiyor” veya gerçekten “0” olup olmadığını belirleyin.

Satır indeksindeki urun bilgisini yeniden DataFrame sütunu yapmak için reset_index() kullanabilirsiniz. Bu işlem, bir önceki çoklu toplulaştırma örneğinin çok seviyeli sütun başlıklarını kendiliğinden tek seviyeye indirmez:

Python:
sonuc = sonuc.reset_index()
print(sonuc)

Böylece satır dizini olarak tutulan urun değeri normal bir sütun haline gelir. Bu biçim, sonucu CSV’ye aktarma veya başka bir tabloyla birleştirme aşamasında daha kullanışlıdır.

Yaygın hata: aynı hücreye birden fazla kayıt düşmesi​

Aşağıdaki örnekte aynı ürün ve ay birleşimi iki kez bulunur:

Python:
df = pd.DataFrame({
    "urun": ["Kalem", "Kalem"],
    "ay": ["Ocak", "Ocak"],
    "tutar": [120, 80]
})

sonuc = df.pivot(
    index="urun",
    columns="ay",
    values="tutar"
)

Bu veri için pivot() kullanmak uygun değildir; çünkü Kalem-Ocak hücresine hem 120 hem de 80 yazılması gerekir. Toplam satış isteniyorsa şu biçimi kullanın:

Python:
sonuc = df.pivot_table(
    index="urun",
    columns="ay",
    values="tutar",
    aggfunc="sum"
)

print(sonuc)

Beklenen değer 200 olur. Bu sonuç, iki kaydın toplandığını gösterir; kayıtların ayrı ayrı korunması gerektiğini kanıtlamaz. Ayrıntılı satış satırlarını kaybetmemek istiyorsanız pivot tabloyu özet görünüm olarak kullanmalı, ham DataFrame’i ayrıca saklamalısınız.

Uygun yöntemi seçme​

Önce satırda hangi bilginin, sütunda hangi kategorinin ve hücrede hangi ölçümün bulunacağını belirleyin. Hücre başına tek kayıt düşüyorsa pivot(), tekrarları toplamak veya ortalamak gerekiyorsa pivot_table() kullanın. Son olarak eksik hücrelerin anlamını kontrol edin, gerekiyorsa reset_index() ile sonucu normal sütunlara çevirin ve print(sonuc) ile beklenen satır-sütun düzenini doğrulayın.
 
Son düzenleme:

Sen de şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Robotlar:
  • Anthropic
Geri
Üst