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

Pandas'ta mevcut sütunlardan yeni özellik nasıl oluşturulur?

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

Garfield

YZF Admin
Yaş
40
Konum
YurtDışı
Katılım
27 Eki 2026
Konular
664
Mesajlar
689
AI Seviyesi
Yeni
Mevcut sütunlardan yeni özellik oluşturmak için pandas'ta önce ilgili sütunları seçip bir ifade, fonksiyon veya koşul uygulayın; ardından sonucu yeni bir sütuna atayın. Böylece ham veriyi koruyarak örneğin toplam tutar, yaş grubu, metin uzunluğu veya iki tarih arasındaki gün sayısı gibi modelleme ve analizde kullanılabilecek yeni değişkenler elde edebilirsiniz. En güvenli yaklaşım, işlemi kopya bir DataFrame üzerinde yapmak ve yeni sütunun beklenen veri türüyle değerlerini kontrol etmektir.

En basit yöntem: sütunları doğrudan hesaplamak​

Varsayımsal olarak elinizde fiyat ve adet sütunları bulunan bir DataFrame olduğunu düşünelim:

Python:
import pandas as pd

df = pd.DataFrame({
    "fiyat": [100, 250, 80],
    "adet": [2, 1, 5]
})

df["toplam_tutar"] = df["fiyat"] * df["adet"]

print(df)

Çıktı şu anlama gelir:

Kod:
   fiyat  adet  toplam_tutar
0    100     2           200
1    250     1           250
2     80     5           400

Burada toplam_tutar, aynı satırdaki fiyat ile adet değerlerinin çarpılmasıyla oluşturulur. pandas, Series işlemlerinde değerleri indeks etiketlerine göre hizalar. Aynı DataFrame’den alınan iki sütun ortak indeksi paylaşır; farklı kaynaklardan gelen sütunlarda ise indekslerin aynı gözlemleri temsil ettiğini ayrıca doğrulayın.

Kullanım durumuna göre uygun yöntem​

Yeni özelliğin nasıl hesaplanacağı, işlemin yalnızca sütunlar arası aritmetik mi yaptığına yoksa koşul veya özel bir dönüştürme mi gerektirdiğine bağlıdır.
İhtiyaçUygun yöntemÖrnek
Sütunlar arasında aritmetik işlemDoğrudan sütun işlemidf["gelir"] - df["gider"]
Koşula göre değer üretmenp.where() veya np.select()gelir >= 10000 ise "yüksek"
Her satıra özel Python mantığıapply()Bir metinden özel değer çıkarma
Metin, tarih veya sayısal dönüşümpandas'ın vektörel yöntemleri.str.len(), .dt.month, .round()
Mümkün olduğunda doğrudan sütun işlemlerini ve pandas'ın vektörel yöntemlerini tercih edin. Bunlar genellikle her satır için Python fonksiyonu çalıştıran apply() kullanımından daha açık ve verimli olur. apply() ise özel mantığın hazır bir vektörel karşılığı bulunmadığında uygundur.

Koşula göre özellik oluşturma​

Örneğin gelir sütununa göre müşterileri iki gruba ayırabilirsiniz:

Python:
import numpy as np

df = pd.DataFrame({
    "gelir": [8000, 12500, 18000]
})

df["gelir_grubu"] = np.where(
    df["gelir"] >= 10000,
    "yüksek",
    "standart"
)

print(df)

Bu örnekte 10.000 ve üzerindeki değerler yüksek, diğerleri standart olur. Sınır değerinin hangi gruba girmesi gerektiğini açıkça belirleyin; >= ile > aynı sonucu vermez.

Üç veya daha fazla koşul varsa np.select() daha okunaklıdır:

Python:
kosullar = [
    df["gelir"] < 10000,
    df["gelir"].between(10000, 15000),
    df["gelir"] > 15000
]

etiketler = ["düşük", "orta", "yüksek"]

df["gelir_seviyesi"] = np.select(
    kosullar,
    etiketler,
    default="belirsiz"
)

default değeri, hiçbir koşula uymayan satırlarda kullanılacak sonucu belirler. Eksik değerlerin yanlışlıkla bir kategoriye girmesini istemiyorsanız onları ayrıca ele alın.

Metin ve tarihlerden yeni özellik üretme​

Metin sütunlarında pandas'ın .str erişicisini, tarih sütunlarında ise önce to_datetime() ve ardından .dt erişicisini kullanabilirsiniz:

Python:
df = pd.DataFrame({
    "ad": ["Ali Veli", "Ayşe Demir"],
    "siparis_tarihi": ["2026-01-10", "2026-02-15"]
})

df["ad_uzunlugu"] = df["ad"].str.len()
df["siparis_tarihi"] = pd.to_datetime(df["siparis_tarihi"])
df["siparis_ayi"] = df["siparis_tarihi"].dt.month

print(df[["ad", "ad_uzunlugu", "siparis_ayi"]])

ad_uzunlugu karakter sayısını, siparis_ayi ise tarihin ay numarasını içerir. Tarihleri dönüştürmeden .dt.month gibi tarih özelliklerini kullanmaya çalışırsanız beklenmeyen bir tür hatası alabilirsiniz.

Uygulama sırası ve kontrol​

Yeni özellik oluştururken aşağıdaki sırayı izleyin:
  1. Girdi sütunlarını kontrol edin. Sütun adlarının gerçekten mevcut olduğunu ve sayısal işlem yapılacak sütunların metin olarak okunmadığını doğrulayın. df.dtypes ve df.head() bu kontrol için yeterlidir.
  2. Eksik değerleri değerlendirin. Eksik bir girdi, kullanılan işleme göre yeni sütunda da eksik değer oluşturabilir veya koşullu sınıflandırmayı etkileyebilir. Eksik değerleri silme ya da doldurma kararını hesaplamanın amacına göre verin; otomatik olarak sıfır kabul etmeyin.
  3. Yeni sütunu atayın. Hesabı df["yeni_ozellik"] = ... biçiminde açık bir adla DataFrame'e ekleyin. Aynı adı kullanırsanız mevcut sütunun üzerine yazılabilir.
  4. Sonucu doğrulayın. df[["girdi1", "girdi2", "yeni_ozellik"]].head() ile birkaç satırı karşılaştırın; ayrıca df["yeni_ozellik"].dtype, isna().sum() ve gerekiyorsa describe() çıktısını inceleyin.
  5. Özelliğin anlamını kontrol edin. Hesaplama doğru görünse bile yeni sütunun hedef bilgiyi yanlışlıkla kullanmadığından emin olun. Özellikle tahmin modellerinde, tahmin anından sonra öğrenilebilecek bir sütunu girdi olarak kullanmak veri sızıntısına yol açabilir.

apply() ne zaman kullanılmalı?​

Satırdaki birden fazla değeri özel bir kuralla birleştirmeniz gerekiyorsa apply() kullanılabilir:

Python:
df = pd.DataFrame({
    "urun": ["Kalem", "Defter"],
    "fiyat": [10, 25],
    "adet": [3, 2]
})

def etiket_olustur(satir):
    tutar = satir["fiyat"] * satir["adet"]
    return f"{satir['urun']} - {tutar} TL"

df["siparis_etiketi"] = df.apply(etiket_olustur, axis=1)

print(df["siparis_etiketi"])

axis=1, fonksiyonun her satırı bir bütün olarak almasını sağlar. Ancak yalnızca basit bir çarpma veya toplama yapıyorsanız apply() yerine doğrudan sütun işlemi kullanın; bu hem niyeti daha açık gösterir hem de gereksiz satır bazlı işlemden kaçınır.

Yeni sütun beklenenden farklı çıkarsa önce girdi sütunlarının veri türünü, eksik değerleri, koşulların sınırlarını ve sütunların aynı satırları temsil edip etmediğini kontrol edin. Hesaplamanın kendisi doğru olsa bile yanlış birimle tutulan değerler (örneğin kuruş ve lira) sonucu anlamsızlaştırabilir.
 

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