Kurs
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ızcapandas.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_varsiç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.Falseise 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.

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.

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)

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()

Çı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()

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)

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. Verinizipandas.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.
|
|
|
|
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.
|
|
|
|
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.
|
|
|
|
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_varsbelirtmezseniz pandas,value_varsiç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 veid_vars'a geçin. -
İstenmeyen sütunları eritmek:
value_vars'ı atladığınızda, pandasid_varsiç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 zamanvalue_varsbelirtin. -
Çı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_namevevalue_namekullanı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.
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.

