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

Pandas apply hangi dönüşüm işlemlerinde kullanılır?

  • 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
Series.apply() ve DataFrame.apply(), sırasıyla Series veya DataFrame üzerinde Python işlevini satır, sütun ya da tek tek değerler düzeyinde çalıştırmak için kullanılır. Özellikle her girdiye aynı kuralla dönüşüm uygulamak, birden fazla sütunu birlikte değerlendirmek veya hazır vektörel pandas işlemlerinin karşılamadığı özel kuralları kodlamak için uygundur. Ancak basit aritmetik, metin ve karşılaştırma işlemlerinde önce vektörel yöntemleri; tek sütundaki tekil değer dönüşümlerinde ise çoğu zaman map() veya Series yöntemlerini tercih etmek daha anlaşılır ve hızlıdır.

apply() hangi dönüşümlerde kullanılır?​


apply() temel olarak bir işlemi eksen boyunca tekrarlar. DataFrame için axis=0 sütunları, axis=1 satırları temsil eder. Series üzerinde normal bir Python işlevi, varsayılan by_row="compat" davranışında her değere uygulanır. by_row=False verilirse işlev Series’in tamamını alır; NumPy ufunc’ları da tüm Series üzerinde uygulanabilir.

En yaygın kullanım alanları şunlardır:
  • Bir sütundaki değeri koşula göre dönüştürmek.
  • Aynı satırdaki birden fazla sütunu birlikte kullanarak yeni bir sonuç üretmek.
  • Her sütuna veya satıra özel bir hesaplama yapmak.
  • Bir hücredeki liste, sözlük veya özel nesne gibi karmaşık verileri işlemek.
  • Hazır pandas işlevleriyle doğrudan ifade edilemeyen özel bir Python işlevini çalıştırmak.
Bir değer yalnızca başka bir değere dönüştürülüyorsa Series.apply() kullanılabilir. Satırdaki birden fazla sütun gerektiğinde ise DataFrame.apply(axis=1) seçilir.

Tek sütunda koşullu dönüşüm​


Varsayımsal olarak aşağıdaki veride puanı 50 ve üzeri olanları "Başarılı", diğerlerini "Başarısız" yapmak istediğinizi düşünelim:

Python:
import pandas as pd

df = pd.DataFrame({
    "ogrenci": ["Ali", "Ayşe", "Mehmet"],
    "puan": [75, 42, 60]
})

df["durum"] = df["puan"].apply(
    lambda puan: "Başarılı" if puan >= 50 else "Başarısız"
)

print(df)

Beklenen sonuçta durum sütununda sırasıyla "Başarılı", "Başarısız" ve "Başarılı" değerleri bulunur. Burada apply() her puanı tek tek işlemiş ve koşulun sonucunu yeni sütuna yazmıştır. Bu kod, puanın geçerli olduğunu kanıtlamaz; eksik veya metin biçimindeki puanlar varsa önce veri türünü ve eksik değerleri ele almak gerekir.

Birden fazla sütunu kullanarak dönüşüm​


Bir satırdaki değerler birlikte değerlendirilmeliyse axis=1 kullanılır. Örneğin puan ve devam oranına göre bir sonuç üretilebilir:

Python:
def karar_ver(satir):
    if satir["puan"] >= 50 and satir["devam_orani"] >= 0.75:
        return "Koşulları sağlıyor"
    return "Koşulları sağlamıyor"

sonuc = pd.DataFrame({
    "puan": [80, 70, 45],
    "devam_orani": [0.90, 0.60, 0.95]
})

sonuc["karar"] = sonuc.apply(karar_ver, axis=1)
print(sonuc)

axis=1, karar_ver() işlevine her seferinde tek bir satır gönderir. Böylece işlev hem puan hem de devam_orani değerini okuyabilir. Sütun adlarından biri yanlış yazılırsa işlem KeyError verebilir; bu durumda önce sonuc.columns çıktısıyla gerçek sütun adlarını kontrol edin.

apply() yerine hangi yöntemi seçmelisiniz?​


Aynı işi birden fazla pandas yöntemiyle yapmak mümkün olabilir. Seçim, dönüşümün tek değere mi, satıra mı, sütuna mı uygulandığına ve hazır bir vektörel işlemin bulunup bulunmadığına göre yapılır.
İhtiyaçUygun yöntemNeden
Sayısal sütuna aynı aritmetik işlemi uygulamaVektörel işlemÖrneğin df["puan"] + 5 daha kısa ve genellikle daha verimlidir.
Tek sütundaki değerleri sözlükle eşlememap()Her değerin karşılığını açıkça belirtir.
Tek sütunda özel Python işlevi çalıştırmaSeries.apply()Her değeri bağımsız olarak dönüştürür.
Birden fazla sütuna göre satır sonucu üretmeDataFrame.apply(axis=1)İşlev aynı satırın birden fazla sütununa erişebilir.
Her sütun için ayrı özet hesaplamaDataFrame.apply(axis=0)İşlev her sütunu bir Series olarak alır.
Metin üzerinde hazır işlem yapmastr yöntemleriÖrneğin df["ad"].str.upper() amacı doğrudan ifade eder.
Örneğin bir sütundaki harfleri büyütmek için apply(lambda metin: metin.upper()) yazılabilir; fakat df["ad"].str.upper() hem niyeti daha açık gösterir hem de pandas'ın metin işlemleri için tasarlanmış yöntemini kullanır. Benzer şekilde iki sütunu doğrudan toplayabiliyorsanız apply(axis=1) yerine df["urun"] + " - " + df["kod"] gibi vektörel bir ifade tercih edilebilir.

axis seçimi ve dönüş sonucunu yorumlama​


DataFrame.apply() içinde axis=0 kullanıldığında işlev her sütunu, axis=1 kullanıldığında her satırı alır. Varsayılan değer axis=0 olduğundan, satır bazlı bir hesaplamada axis=1 yazmayı unutmak en sık karşılaşılan hatalardan biridir.

İşlevin döndürdüğü değerin biçimi de sonucu etkiler. Her satır veya sütun için tek bir değer döndürürseniz genellikle Series elde edersiniz. axis=1 ile liste döndüren bir işlev, varsayılan olarak listeleri içeren bir Series üretir; liste elemanlarını sütunlara açmak için result_type="expand" kullanılır. İşlev her satır için bir Series döndürürse sonuç sütunlara açılır. Bu nedenle işlemden sonra type(sonuc), sonuc.shape ve sonuc.head() ile çıktının türünü, boyutunu ve ilk satırlarını kontrol edin.

Eksik değerler için de açık karar verin. Örneğin puan sütununda NaN varsa karşılaştırma beklediğiniz sonucu vermeyebilir. Eksik değerleri önce doldurabilir, ayrı bir durum olarak işleyebilir veya ilgili satırları dışarıda bırakabilirsiniz. apply() eksik veriyi otomatik olarak anlamlandırmaz; yalnızca verdiğiniz işlevi çalıştırır.

Kısa karar kuralı​


İşlem tek bir sütundaki her değeri dönüştürüyor ve hazır bir .str, .dt, map() veya vektörel ifade varsa önce onu kullanın. Dönüşüm özel bir Python kuralı gerektiriyorsa Series.apply() uygundur. Sonuç için aynı satırdaki birkaç sütun birlikte gerekiyorsa DataFrame.apply(..., axis=1) kullanın. İşlem tamamlandığında yeni sütunun değerlerini, veri türünü ve satır sayısını kontrol ederek dönüşümün beklediğiniz biçimde gerçekleştiğini doğrulayın.
 

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.
Geri
Üst