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

Pandas'ta metin tarih alanları nasıl tarih türüne dönüştürü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 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
Metin biçimindeki tarih sütununu pandas'ta tarih türüne çevirmek için pd.to_datetime() kullanın. Dönüşümden sonra sütun, tarih karşılaştırma, sıralama ve tarih aralığı filtreleme işlemlerinde kullanılabilen bir tarih/saat türüne geçer. Çözünürlük pandas sürümüne ve girdinin duyarlılığına göre değişebilir; her sonuç datetime64[ns] olmak zorunda değildir. Tarih biçimi belliyse format belirtmek hatalı yorumlama riskini azaltır; bozuk değerleri nasıl ele alacağınızı ise errors parametresiyle seçebilirsiniz.

Temel dönüşüm​


Ön koşul olarak pandas'ın içe aktarılmış olması ve tarihlerin bulunduğu sütunun metin değerleri içermesi gerekir. Aşağıdaki örnekteki veriler varsayımsaldır:

Python:
import pandas as pd

df = pd.DataFrame({
    "tarih": ["2026-11-08", "2026-11-09", "2026-11-10"],
    "satis": [120, 150, 95]
})

df["tarih"] = pd.to_datetime(df["tarih"])

print(df.dtypes)
print(df["tarih"].min())

Pandas 3’te bu örneğin tür çıktısında tarih sütunu datetime64[us] olarak görünür. Daha eski sürümlerde datetime64[ns] görülebilir; önemli olan çıktının artık tarih/saat türünde olmasıdır. min() çağrısı da artık metin sıralaması değil, tarih değerlerinin kronolojik karşılaştırması üzerinden çalışır.

Bir CSV dosyasını okurken dönüşümü aynı akışta da yapabilirsiniz:

Python:
df = pd.read_csv("satislar.csv")
df["tarih"] = pd.to_datetime(df["tarih"])

Dönüşümün gerçekten yapıldığını df.dtypes ile kontrol edin. Sütun hâlâ object görünüyorsa dönüşüm sonucu başka bir değişkene atanmış olabilir veya dönüşüm yapılan sütun beklediğiniz sütun olmayabilir.

Tarih biçimi belliyse format belirtin​


Gün, ay ve yıl sırasının açıkça bilindiği verilerde format kullanın. Örneğin 08.11.2026 değeri için biçim %d.%m.%Y olur:

Python:
df["tarih"] = pd.to_datetime(
    df["tarih"],
    format="%d.%m.%Y"
)

Yaygın biçim belirteçleri şunlardır:
Metin örneğiformat değeriAnlamı
2026-11-08%Y-%m-%dDört haneli yıl-ay-gün
08.11.2026%d.%m.%YGün.ay.dört haneli yıl
11/08/2026%m/%d/%YAy/gün/dört haneli yıl
08/11/2026%d/%m/%YGün/ay/dört haneli yıl
2026-11-08 14:30:00%Y-%m-%d %H:%M:%STarih ve 24 saatlik saat
%d/%m/%Y ile %m/%d/%Y aynı metin için farklı sonuç verebilir. Örneğin 03/04/2026 değeri, ilk biçimde 3 Nisan 2026; ikinci biçimde 4 Mart 2026 anlamına gelir. Bu nedenle yalnızca verinin görünüşüne bakarak biçim seçmeyin; kaynağın gün-ay mı, ay-gün mü kullandığını doğrulayın.

Biçimi belirterek yapılan dönüşüm, biçime uymayan bir değer varsa hata verebilir. Bu davranış, veri kalitesindeki sorunu gizlemek istemediğiniz durumlarda yararlıdır. Dönüşümden sonra df.dtypes çıktısında tarih sütununu yeniden kontrol edin.

Hatalı tarih değerlerini yönetme​


Sütunda boş, eksik veya geçersiz tarihler bulunuyorsa errors seçeneğini kullanın. Seçenekler farklı sonuçlar üretir:
SeçenekSonuçNe zaman kullanılır?
raiseİlk geçersiz değerde hata verirVeri hatasını hemen fark etmek istediğinizde
coerceGeçersiz değerleri NaT yaparGeçersiz kayıtları sonradan ayırmak istediğinizde
Pandas 3’te errors="ignore" desteklenmez. Hatanın durdurmasını istiyorsanız raise, geçersiz tarihleri NaT olarak ayırmak istiyorsanız coerce seçin.
Örneğin:

Python:
df = pd.DataFrame({
    "tarih": ["08.11.2026", "gecersiz", None]
})

df["tarih"] = pd.to_datetime(
    df["tarih"],
    format="%d.%m.%Y",
    errors="coerce"
)

print(df)
print(df["tarih"].isna())

Bu örnekte gecersiz ve eksik değerler NaT olur. NaT, tarih sütunlarında kullanılan eksik tarih değeridir; geçersiz metnin geçerli bir tarihe dönüştüğünü kanıtlamaz. Hangi satırların sorunlu olduğunu görmek için dönüşümden önce özgün sütunu koruyabilir veya df["tarih"].isna() ile bu satırları ayırabilirsiniz.

Dönüşümden sonra filtreleme ve tarih kullanımı​


Tarih türüne çevrilmiş sütunla tarih karşılaştırması yaparken karşılaştırılan değeri de tarih olarak oluşturun:

Python:
baslangic = pd.Timestamp("2026-11-01")
bitis = pd.Timestamp("2026-12-01")

secili = df[
    df["tarih"].between(baslangic, bitis, inclusive="left")
]

print(secili)

Bu yarı açık aralık, 1 Kasım’ı kapsar ve 1 Aralık’ı dışarıda bırakır; böylece 30 Kasım’ın saat içeren kayıtları da seçilir. Bitişi 30 Kasım gece yarısı olarak belirlemek, o günün daha sonraki saatlerini dışarıda bırakır. Filtre sonucunun boş olması, dönüşümün başarısız olduğunu tek başına kanıtlamaz; veri gerçekten belirtilen tarih aralığı dışında da olabilir. Önce df["tarih"].min(), df["tarih"].max() ve df.dtypes değerlerini kontrol edin.

Saat dilimi içeren metinlerde veya farklı kaynaklardan gelen zaman damgalarında tüm değerlerin aynı zaman diliminde olup olmadığını ayrıca belirleyin. Yalnızca metni tarih/saat türüne çevirmek, farklı zaman dilimlerinin iş anlamını kendiliğinden düzeltmez. Tarih dönüşümü başarılı olsa bile verinin gün-ay sırası, saat dilimi ve eksik kayıtları doğru yorumladığınızı ayrıca doğrulamanız gerekir.
 
Son düzenleme:

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