Ana içeriğe atla

pandas melt(): Geniş Veriyi Uzun Formata Dönüştürmenin En İyi Yolu

pandas.melt() ile DataFrame'leri genişten uzun formata nasıl dönüştüreceğinizi, pratik örnekler ve yaygın kullanım senaryolarıyla öğrenin.
Güncel 4 Ağu 2026  · 8 dk. oku

Yapay Zekâyla Keşfet

ChatGPT'de açClaude'da açPerplexity'de aç

Geniş format okunması kolaydır, ancak birçok analiz ve görselleştirme görevi verinin uzun formatta olmasını gerektirir.

pandas.melt() fonksiyonu, bir veya daha fazla sütunu satırlara dönüştürürken seçilen tanımlayıcı sütunları değiştirmeden bırakarak bir DataFrame'i yeniden şekillendirir. Bu sayede verinizi filtrelemek, gruplamak, görselleştirmek ve analiz etmek daha kolay hale gelir.

Bu eğitimde, pandas.melt() fonksiyonunu nasıl kullanacağınızı göstereceğim. Ayrıca pivot(), stack() ve wide_to_long() gibi seçeneklerle nasıl karşılaştırıldığını da göstereceğim. Python'a yeni başlıyorsanız, veri türleri, listeler, temel fonksiyonlar ve paketler gibi becerileri kapsayan our Introduction to Python course kursumuzu almanızı öneririm.

pandas.melt() Nasıl Kullanılır

pandas.melt() fonksiyonu, sütun başlıklarını yeni bir sütunda değerler haline getirerek bir DataFrame'i geniş formattan uzun formata dönüştürür.

Sözdizimi şu şekildedir:

pandas.melt(
    frame,
    id_vars=None,
    value_vars=None,
    var_name=None,
    value_name="value",
    col_level=None,
    ignore_index=True
)

Burada:

  • frame: Yeniden şekillendirilecek DataFrame. Yalnızca pandas.melt() kullanılırken gereklidir.

  • id_vars: Değişmeden tutulacak sütun veya sütun listesi. Bu sütunlar, yeniden şekillendirmeden sonra her satırı tanımlar.

  • value_vars: Unpivot edilecek sütun veya sütun listesi. Belirtilmezse pandas, id_vars içinde olmayan tüm sütunları eritir (melt eder).

  • var_name: Orijinal sütun adlarını saklayan yeni sütunun adı. Belirtilmezse varsayılan olarak ”variable” kullanılır.

  • value_name: Değerleri saklayan yeni sütunun adı. Belirtilmezse varsayılan olarak ”value” kullanılır.

  • col_level: İsteğe bağlıdır; MultiIndex sütunlarla çalışırken hangi seviyenin eritileceğini belirtir.

  • ignore_index: True (varsayılan) ise yeni bir sıralı indeks oluşturur. False ise orijinal indeksi korur.

Yukarıdaki sözdiziminin veriyi nasıl yeniden şekillendirdiğini göstermek için bir örnek göstereyim.

Aşağıdaki veri setine sahip olduğunuzu varsayalım; her ürünün aylık satışları ayrı sütunlarda tutuluyor.

Geniş formatta bir DataFrame örneği.

Ay sütunlarını satırlara dönüştürmek için pandas.melt() kullanabilirsiniz.

# Convert the DataFrame from wide format to long format
products_sales_2025_melted = products_sales_2025.melt(
    # Keep the Product and Category columns unchanged
    id_vars=["Product", "Category"],

    # Convert the month columns into rows
    value_vars=["January", "February", "March", "April", "May", "June"],

    # Name of the new column that stores the original column names
    var_name="Month",

    # Name of the new column that stores the corresponding sales values
    value_name="Sales"
)

# Display the reshaped DataFrame
products_sales_2025_melted.head(10)

Ortaya çıkan DataFrame artık her ayı ayrı bir satır olarak saklıyor.

pandas.melt() kullanılarak uzun formata dönüştürülmüş DataFrame

Yaygın pandas.melt() Örnekleri

Artık pandas.melt() sözdiziminin nasıl çalıştığını anladığınıza göre, her parametrenin tek başına nasıl davrandığını göstereyim. Aşağıdaki örneklerde tabove tablosunu kullanacağız. 

Seçili sütunları eritme

value_vars parametresi, hangi sütunların unpivot edileceğini belirtmenizi sağlar. Tüm ayları eritmek yerine yalnızca ihtiyaç duyduğunuz sütunları dönüştürebilirsiniz.

Bu örnekte yalnızca Ocak ve Şubat sütunları eritilmiştir. Kalan ay sütunları yok sayılmıştır.

# Convert only the January and February columns into rows
product_sales_3month = products_sales_2025.melt(
    id_vars="Product",
    value_vars=["January", "February",]
)

product_sales_3month.head(20)

pandas.melt() kullanarak seçili sütunları eritme

Tanımlayıcı sütunları koruma

Geri kalan sütunlar yeniden şekillendirilirken, bir veya daha fazla sütunu değiştirmeden tutmak için id_vars parametresini kullanın.

Aşağıdaki örnekte “Product” ve “Category” değişmeden kalırken, aylık satış sütunları satırlara dönüştürülür.

# Keep the Product and Category columns while melting the monthly sales
product_sales_cat = products_sales_2025.melt(
    id_vars=["Product", "Category"]
)

product_sales_cat.head()

pandas.melt() fonksiyonunu kullanarak tanımlayıcı sütunları koruma.

Çıktı sütunlarını yeniden adlandırma

Dikkat ettiyseniz, çıktı sütunları varsayılan olarak variable ve value olarak adlandırılır. Onlara açıklayıcı adlar vermek için var_name ve value_name argümanlarını kullanın.

Örneğin, aşağıdaki çıktıda variable sütununu “Month”, value sütununu ise “Sales” olarak yeniden adlandırdık.

# Keep the Product and Category columns while melting the monthly sales
# Rename Month and Sales columns
product_sales_cat = products_sales_2025.melt(
    id_vars=["Product", "Category"],
    var_name="Month",
    value_name="Sales"
)

product_sales_cat.head()

pandas.melt() fonksiyonunda var_name ve value_name kullanarak çıktı sütunlarını yeniden adlandırma.

Orijinal indeksi koruma

Varsayılan olarak pandas.melt() yeni bir sıralı indeks oluşturur. Orijinal satır indeksini korumak için ignore_index=False ayarlayın.

# Keep the original row index after reshaping
product_sales_index = products_sales_2025.melt(
    id_vars=["Product", "Category"],
    var_name="Month",
    value_name="Sales",
    ignore_index=False
)

product_sales_index.head(10)

pandas.melt() fonksiyonunda ignore_index=False kullanarak orijinal indeksi koruma.

Yukarıdaki örnekte, orijinal satır etiketleri (0–5) yeni bir sıralı indeksle değiştirilmek yerine her ay için tekrarlanır.

pandas.melt() Ne Zaman Kullanılmalı?

pandas.melt(), veriniz geniş formattaysa ve analiz veya görselleştirme için uzun formata dönüştürülmesi gerekiyorsa faydalıdır. Ayrıca fonksiyonu şu kullanım durumları için önemli buluyorum:

  • Geniş veriyi uzun formata dönüştürme: Birçok veri seti, ilişkili değerleri birden çok sütuna yayar. Bu format okunması kolay olsa da analizi zorlaştırabilir. pandas.melt(), bu sütunları tanımlayıcı sütunları koruyarak tek bir sütunda birleştirir ve sonraki işlemler için daha temiz bir yapı oluşturur.

  • Çizim için veriyi hazırlama: Seaborn gibi birçok çizim kütüphanesi, grafik oluştururken uzun form verilerle en iyi şekilde çalışır. Birden çok sütunu elle birleştirmek yerine, veriyi bu kütüphanelerin beklediği formata dönüştürmek için pandas.melt() kullanabilirsiniz.

  • İstatistiksel analiz için veriyi hazırlama: groupby(), toplulaştırmalar, filtreleme ve özet istatistikler dahil birçok pandas işlemi, ölçümler birden çok sütuna yayılmak yerine tek bir sütunda tutulduğunda daha basit hale gelir. Verinizi pandas.melt() ile yeniden şekillendirirseniz, farklı değişkenleri analiz etmek için gereken kod miktarı azalır.

  • Tertipli (tidy) veri setleri oluşturma: Tertipli bir veri setinde her değişken kendi sütununda, her gözlem kendi satırındadır. Veri setiniz birden çok sütuna yayılmış tekrarlı ölçümler içeriyorsa, pandas.melt() bunu tertipli formata dönüştürmenin çoğu zaman en hızlı yoludur.

Python'da saçılım, sayım, çubuk ve kutu grafikleri dahil çeşitli grafikler oluşturmayı ve özelleştirmeyi öğrenmek için Introduction to Data Visualization with Seaborn kursumuzu almanızı öneririm.

pandas.melt() ve Diğer Yeniden Şekillendirme Fonksiyonları

Pandas, her biri farklı bir amaca hizmet eden çeşitli yeniden şekillendirme fonksiyonları sunar. Her yöntemin farklarını inceleyelim.

pandas.melt() ve pivot()

Aşağıdaki tablo, pandas.melt() ile pivot() fonksiyonları arasındaki farkı gösterir.

melt()

pivot()

Geniş veriyi uzun veriye dönüştürür.

Uzun veriyi yeniden geniş veriye dönüştürür. 

Sütunları satırlara çevirir. 

Satır değerlerini sütunlara çevirir.

Analiz ve görselleştirme için veriyi hazırlamada faydalıdır.

Veriyi bir raporda özetlemek veya sunmak için faydalıdır.

Dolayısıyla, ölçümleriniz birden çok sütuna yayılmışsa melt() tercih edin; satır değerlerini sütunlara yaymak istediğinizde ise pivot() kullanın.

pandas.melt() ve stack()

Her iki fonksiyon da veriyi yeniden şekillendirir, ancak şu şekilde farklılaşırlar.

melt()

stack()

Düzenli sütunları satırlara dönüştürür.

Bir veya daha fazla sütun seviyesini indekse taşır. 

Standart bir DataFrame üretir. 

MultiIndex'e sahip bir Series veya DataFrame üretir. 

Çoğu analiz görevi için okunması ve kullanımı daha kolaydır.

İndeks tabanlı yeniden şekillendirme işlemleri için daha uygundur.

Hiyerarşik indeksler veya MultiIndex nesneleriyle çalışmanız gerektiğinde stack() kullanabilirsiniz.

pandas.melt() ve wide_to_long()

Her iki fonksiyon da geniş veriyi uzun formata dönüştürür, ancak aşağıda gösterildiği gibi farklı durumlar için tasarlanmıştır.

melt()

wide_to_long()

Esnektir ve neredeyse her DataFrame ile çalışır.

Tutarlı sütun adlandırma kalıplarına sahip veri setleri için tasarlanmıştır.  

Genel amaçlı yeniden şekillendirme için uygundur.  

Sales_2023, Sales_2024 ve Sales_2025 gibi tekrarlı ölçümler için idealdir.

Veri setiniz düzensiz sütun adlarına sahipse melt() kullanın. Sütunlarınız öngörülebilir bir adlandırma kuralını izliyorsa, daha az kodla yeniden şekillendirmek için wide_to_long() kullanın.

pandas.melt() ile Yapılan Yaygın Hatalar

pandas.melt() kullanımı kolay olsa da, karşılaştığım en yaygın tuzaklar ve bunları nasıl düzeltebileceğiniz aşağıdadır.

  • id_vars'ı unutmak: id_vars belirtmezseniz pandas, value_vars içinde listelenmeyen her sütunu değer sütunu olarak kabul eder. Bu, tanımlayıcı olarak tutmak istediğiniz sütunların da yeniden şekillendirilmesine neden olabilir. Bunu düzeltmek için her kaydı benzersiz şekilde tanımlayan sütunları belirleyin ve id_vars'a geçin.

  • İstenmeyen sütunları eritmek: value_vars'ı atladığınızda, pandas id_vars içinde yer almayan tüm sütunları eritir. Bu, dönüştürmeyi amaçlamadığınız sütunları da içerebilir. Bu nedenle, yalnızca bir alt küme sütunu eritmek istediğinizde her zaman value_vars belirtin.

  • Çıktı şeklinin yanlış anlaşılması: Eritmeden sonra satır sayısı artar; çünkü seçilen her sütun, her kayıt için ayrı bir satır olur. Örneğin, 10 satır ve 12 ay sütunu olan bir DataFrame, ay sütunları eritildikten sonra 120 satır üretir. Bu nedenle, verinin doğru şekilde eritildiğini doğrulamak için yeniden şekillendirmeden önce ve sonra şekli mutlaka kontrol edin.

  • Geniş ve uzun formatların karıştırılması: Geniş formatta benzer değerler birden çok sütunda saklanır. Uzun formatta ise benzer değerler tek bir sütunda, değişkeni belirten başka bir sütunla birlikte tutulur.

pandas.melt() Kullanımı için En İyi Uygulamalar

Yeniden şekillendirme kodunuzun anlaşılması ve bakımı daha kolay olsun diye, pandas.melt() fonksiyonunu kullanırken şu en iyi uygulamaları takip etmenizi öneririm:

  • Önce tanımlayıcı sütunları belirleyin: Hangi sütunların değişmeden kalması gerektiğine karar verin ve bunları id_vars'a geçin.

  • Oluşturulan sütunları yeniden adlandırın: Varsayılan variable ve value adlarına güvenmek yerine var_name ve value_name kullanın.

  • Eritmeden sonra satır sayısını inceleyin: Özellikle çok sayıda sütunu eritirken, satır sayısının beklentilerinizle eşleştiğini doğrulayın.

  • Veriyi geri şekillendirmek için pivot() kullanın: Analizden sonra orijinal geniş formata geri dönmeniz gerekiyorsa pivot() fonksiyonunu kullanın.

Take our Writing Efficient Python Code course to learn nasıl verimli, hata ayıklaması ve bakımı kolay kod yazılacağını öğrenin.

Sonuç

pandas.melt(), geniş formatlı verileri uzun formata dönüştürmek için standart pandas fonksiyonudur. id_vars ve value_vars rollerini anladığınızda, hangi sütunların tanımlayıcı olarak kalacağını ve hangilerinin satırlara dönüştürüleceğini kontrol edebilirsiniz.

Python'u kapsamlı şekilde anlamak için Python Data Fundamentals ve Python Programming Fundamentals yetkinlik yollarımızdan daha fazlasını öğrenebilirsiniz.


Allan Ouko's photo
Author
Allan Ouko
LinkedIn
Veri analitiği, iş zekâsı ve veri bilimi alanlarında pratik deneyime sahip Veri Bilimi Teknik Yazarı. SQL, Python, Power BI, Databricks ve veri mühendisliği üzerine, gerçek dünya analitik çalışmalarına dayanan, uygulamaya dönük ve sektöre odaklı içerikler yazıyorum. Yazılarım teknik derinlikle iş etkisi arasındaki köprüyü kurarak profesyonellerin veriyi güvenle karara dönüştürmelerine yardımcı olur.

SSS

pandas.melt()'i ne zaman kullanmalıyım?

Veriniz sütunlara yayılmış tekrarlı değerlere sahipse ve analiz ya da görselleştirme için uzun formatta bir DataFrame istiyorsanız kullanın.

var_name ve value_name nedir?

Bu parametreler, orijinal sütun adlarını ve bunlara karşılık gelen değerleri saklayan oluşturulmuş sütunları yeniden adlandırır.

pandas.melt() orijinal DataFrame'i değiştirir mi?

Hayır. Orijinali değiştirmeden yeniden şekillendirilmiş yeni bir DataFrame döndürür.

melt() ile pivot() arasındaki fark nedir?

melt() geniş veriyi uzun formata dönüştürür, pivot() ise uzun veriyi yeniden geniş formata dönüştürür.

melt() ile stack() arasındaki fark nedir?

melt(), sütunları satırlara dönüştürürken düzenli bir DataFrame'i korur. stack() ise sütunları indekse taşır ve hiyerarşik (MultiIndex) bir yapı oluşturur.

Konular

DataCamp ile pandas öğrenin

Kurs

pandas ile Kolaylaştırılmış Veri Alımı

4 sa
63.3K
CSV dosyaları, elektronik tablolar, JSON, SQL veritabanları ve API'ler gibi yaygın dosya formatlarından ve sistemlerden veri elde etmeyi öğrenin.
Ayrıntıları GörRight Arrow
Kursa Başla
Devamını GörRight Arrow
İlgili

blog

2026’da En Popüler 40 Yazılım Mühendisi Mülakat Sorusu

Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Dario Radečić's photo

Dario Radečić

15 dk.

blog

Hızlı Sevkiyat İçin Pratik Vibe Kodlama Teknoloji Yığını

Ön uç, arka uç, veritabanları, kimlik doğrulama, depolama, e-posta, test, dağıtım ve izleme için en iyi araçları keşfedin.
Abid Ali Awan's photo

Abid Ali Awan

14 dk.

Eğitim

Python'da Listeyi String'e Nasıl Dönüştürürsünüz

Bu hızlı eğitimde, Python'da bir listeyi string'e nasıl dönüştüreceğinizi öğrenin.
Adel Nehme's photo

Adel Nehme

Eğitim

.gitignore Nasıl Kullanılır: Örneklerle Pratik Bir Giriş

Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kurtis Pykes 's photo

Kurtis Pykes

Devamını GörDevamını Gör