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

Pandas sütun veri türleri 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

Garfield

Yönetici
YZF Admin
Yaş
40
Konum
YurtDışı
Katılım
27 Eki 2026
Konular
488
Mesajlar
501
AI Seviyesi
Yeni
İlk olarak hedef sütunu seçip dönüşüm sonucunu yeniden DataFrame’e atamalısınız; yalnızca df["sütun"].astype(...) yazmak sütunun veri türünü kalıcı olarak değiştirmez. Sayısal değerler için astype, kirli veya eksik veriler için pd.to_numeric, tarihler için pd.to_datetime kullanılır. İşlemden sonra df.dtypes ile sonucu doğrulayabilirsiniz.

Sütunun veri türünü doğrudan değiştirme​

Varsayımsal olarak aşağıdaki DataFrame’de yas sütunu metinlerden oluşsun:

Python:
import pandas as pd

df = pd.DataFrame({
    "ad": ["Ali", "Ayşe", "Mehmet"],
    "yas": ["25", "31", "42"]
})

print(df.dtypes)

yas sütunu bu durumda genellikle object veya metin ağırlıklı bir tür olarak görünür. Sütunu tam sayıya çevirmek için dönüşüm sonucunu tekrar aynı sütuna atayın:
  1. DataFrame’i hazırlayın. pandas kütüphanesini içe aktarın ve dönüştürülecek sütunun gerçekten DataFrame içinde bulunduğundan emin olun.
  2. Dönüşüm yöntemini seçin. Değerlerin tamamı geçerli sayılardan oluşuyorsa astype("int64") veya astype("float64") kullanabilirsiniz.
  3. Sonucu sütuna atayın. df["yas"] = df["yas"].astype("int64") kodunu çalıştırın; atama yapılmazsa DataFrame’in özgün türü değişmez.
  4. Yeni türü kontrol edin. df.dtypes veya yalnızca ilgili sütun için df["yas"].dtype çalıştırın. Beklenen sonuç int64 gibi bir tam sayı türüdür.
En küçük çalışan örnek şöyledir:

Python:
df["yas"] = df["yas"].astype("int64")

print(df)
print(df["yas"].dtype)

Beklenen veri görünümü şöyledir:

Kod:
       ad  yas
0     Ali   25
1    Ayşe   31
2  Mehmet   42

int64

Bu sonuç, değerlerin sayısal biçime çevrildiğini gösterir; ancak değerlerin iş açısından doğru veya makul olduğunu kanıtlamaz. Örneğin 999 teknik olarak geçerli bir tam sayıdır fakat uygulamanız açısından hatalı olabilir.

Kirli veya eksik değerleri dönüştürme​

Sütunda "bilinmiyor", boş metin veya "1.250 TL" gibi sayıya doğrudan çevrilemeyen değerler varsa astype hata verebilir. Bu durumda önce pd.to_numeric kullanın. errors="coerce", çevrilemeyen değerleri NaN yapar; hatalı veriyi düzeltmez, yalnızca eksik değer olarak işaretler.

Python:
df = pd.DataFrame({
    "puan": ["85", "90", "bilinmiyor", ""]
})

df["puan"] = pd.to_numeric(df["puan"], errors="coerce")

print(df)
print(df.dtypes)

Bu işlemden sonra geçersiz iki değer NaN olur ve sütun çoğunlukla float64 türüne dönüşür. Tam sayı türünü korumak istiyorsanız pandas’ın eksik değer destekleyen Int64 türünü kullanabilirsiniz:

Python:
df["puan"] = pd.to_numeric(
    df["puan"],
    errors="coerce"
).astype("Int64")

Buradaki Int64 ile int64 aynı değildir. Büyük I içeren Int64, eksik değerleri de taşıyabilen pandas türüdür. Dönüşümden sonra df["puan"].isna() ile hangi satırların çevrilemediğini bulup kaynak veriyi düzeltmeniz gerekir.

Hangi dönüşüm yöntemini kullanmalısınız?​

Yöntem seçimi, sütundaki değerlerin anlamına ve hatalı veriye nasıl davranmak istediğinize bağlıdır.
İhtiyaçYöntemÖnemli sonuç
Tamamı geçerli tam sayılarastype("int64")Geçersiz değer varsa hata verir
Geçerli veya kirli sayılar_numeric(...)errors="coerce" hatalı değerleri NaN yapar
Ondalıklı sayılarastype("float64")Ondalık kısmı korur
Tarih ve saat bilgisi_datetime(...)Geçersiz tarihleri NaT yapabilir
Tekrarlanan sınırlı metin değerleriastype("category")Kategori türü oluşturur; sayıya dönüştürmez
Tablodaki yöntemler birbirinin yerine her zaman kullanılamaz. Örneğin tarih metnini astype("int64") ile çevirmek, metnin tarih olarak yorumlanmasını sağlamaz. Tarih için şu biçimi kullanın:

Python:
df["kayit_tarihi"] = pd.to_datetime(
    df["kayit_tarihi"],
    errors="coerce"
)

errors="coerce" kullanıldığında geçersiz tarihler NaT olur. Bu değerleri ayrıca incelemeden verinin tamamen doğru olduğu sonucuna varmayın.

Birden fazla sütunun türünü değiştirme​

Birden fazla sütunu tek seferde dönüştürmek için astype içine sözlük verebilirsiniz:

Python:
df = df.astype({
    "miktar": "float64",
    "adet": "int64",
    "urun_kodu": "string"
})

print(df.dtypes)

Bu yöntem, sözlükteki sütunlardan birinde çevrilemeyen değer bulunursa hata verebilir. Dış kaynaktan gelen verilerde önce sorunlu sütunları pd.to_numeric veya pd.to_datetime ile kontrollü biçimde dönüştürmek, ardından df.dtypes ve eksik değer kontrolleriyle sonucu doğrulamak daha güvenlidir.
 

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