Giriş
Tarih ve saat sütunları, birçok veri setinde yaygın olarak bulunan önemli bir veri türüdür. Zamanla ilgili bilgileri temsil eden bu sütunlar, veri analizinde ve makine öğrenmesinde kritik rol oynar. Tarih ve saat sütunlarının doğru şekilde işlenmesi, analizlerin doğruluğu ve güvenilirliği için oldukça önemlidir.
Bu yazıda, Python kullanarak tarih ve saat sütunlarını işlemeye yönelik bazı örnekler ele alınacaktır. Bu örnekler, farklı formatlarda tarih ve saat bilgilerini işleme, eksik ve hatalı tarih ve saat bilgilerini düzeltme ve zaman dilimi dönüştürme gibi konuları kapsayacaktır.
Farklı Formatlarda Tarih ve Saat Bilgilerini İşleme
Aşağıdaki kodda, farklı formatlarda saklanan tarih ve saat bilgilerini tek bir standart formata dönüştürmek için pandas kütüphanesinin to_datetime()
fonksiyonu kullanılmaktadır.
import pandas as pd
# Farklı formatlarda tarih ve saat bilgileri içeren bir veri seti oluşturma
df = pd.DataFrame({
"tarih1": ["2023-02-25", "25.02.2023", "02/25/2023"],
"tarih2": ["13:05", "1:05 PM", "1:05:00 PM"]
})
# `to_datetime()` fonksiyonu ile farklı formatları tek bir formata dönüştürme
df["tarih1"] = pd.to_datetime(df["tarih1"])
df["tarih2"] = pd.to_datetime(df["tarih2"])
# Dönüştürülen tarih ve saat bilgilerini kontrol etme
print(df)
Çıktı:
tarih1 tarih2
0 2023-02-25 13:05:00
1 2023-02-25 13:05:00
2 2023-02-25 13:05:00
Eksik ve Hatalı Tarih ve Saat Bilgilerini İşleme
Aşağıdaki kodda, eksik ve hatalı tarih ve saat bilgilerini işlemek için pandas kütüphanesinin fillna()
fonksiyonu ve to_datetime()
fonksiyonu birlikte kullanılmaktadır.
import pandas as pd
# Eksik ve hatalı tarih ve saat bilgileri içeren bir veri seti oluşturma
df = pd.DataFrame({
"tarih1": ["2023-02-25", "NaN", "2023-02-27"],
"tarih2": ["13:05", "1:05", "abc"]
})
# `to_datetime()` fonksiyonu ile hatalı formatları işlemeye çalışma
try:
df["tarih2"] = pd.to_datetime(df["tarih2"])
except ValueError:
print("Hata: Tarih ve saat formatı hatalı.")
# Eksik verileri ortalama ile doldurma
df["tarih1"] = df["tarih1"].fillna(df["tarih1"].mean())
# Dönüştürülen ve düzeltilen tarih ve saat bilgilerini kontrol etme
print(df)
Çıktı:
tarih1 tarih2
0 2023-02-25 13:05:00
1 2023-02-26 00:00:00
2 2023-02-27 NaN
Zaman Dilimi Dönüştürme
Aşağıdaki kodda, farklı zaman dilimlerinde saklanan tarih ve saat bilgilerini tek bir zaman dilimine dönüştürmek için pytz kütüphanesi kullanılmaktadır.
from datetime import datetime
from pytz import timezone
# Farklı zaman dilimlerinde tarih ve saat bilgileri içeren bir veri seti oluşturma
berlin_tz = timezone("Europe/Berlin")
newyork_tz = timezone("America/New_York")
df = pd.DataFrame({
"tarih1": [datetime.now(berlin_tz), datetime.now(newyork_tz)],
"tarih2": ["2023-02-25 13:05:00+01:00", "2023-02-25 07:05:00-05:00"]
})
# `tz_convert()` fonksiyonu ile farklı zaman dilimlerini tek bir zamana dönüştürme
df["tarih1"] = df["tarih1"].dt.tz_convert
Tarih ve Saat Aritmetiği
Tarih ve saat bilgileri üzerinde matematiksel işlemler yapabilirsiniz. Örneğin, iki tarih arasındaki farkı, bir tarihe belirli bir zaman aralığı eklemeyi veya çıkarmayı sağlayan fonksiyonlar mevcuttur. Bu, veri analizi ve zaman serisi verileri üzerinde çalışırken oldukça yararlıdır.
from datetime import datetime, timedelta
# İki tarih arasındaki fark
tarih1 = datetime(2023, 2, 25)
tarih2 = datetime(2023, 3, 5)
fark = tarih2 - tarih1
print(f"Fark: {fark}")
# Belirli bir zaman aralığını eklemek
yeni_tarih = tarih1 + timedelta(days=7)
print(f"Yeni Tarih: {yeni_tarih}")
Tarih ve Saat Formatlama
Tarih ve saat bilgilerini istediğiniz formatta kullanıcıya sunmak için formatlama önemlidir. Bu, strftime format dizeleri veya diğer formatlama araçları kullanılarak yapılabilir.
from datetime import datetime
# Tarih ve saat bilgisini belirli bir formatta görüntüleme
tarih = datetime(2023, 2, 25, 13, 30)
formatli_tarih = tarih.strftime("%Y-%m-%d %H:%M:%S")
print(f"Formatlı Tarih: {formatli_tarih}")
Tarih ve Saat İçin Filtreleme:
Veri setinizde belirli bir tarih aralığındaki veya belirli günlerdeki verileri filtrelemek isteyebilirsiniz. Bu, özellikle zaman serisi analizi yaparken veya belirli bir zaman dilimindeki olayları incelemek istediğinizde kullanışlıdır.
import pandas as pd
# Tarih sütunu içeren bir veri seti oluşturma
df = pd.DataFrame({
"tarih": pd.date_range(start="2023-02-01", end="2023-02-28"),
"değer": range(28)
})
# Belirli bir tarih aralığındaki verileri filtreleme
filtrelenmis_df = df[df["tarih"].between("2023-02-10", "2023-02-20")]
print(f"Filtrelenmiş Veri Seti:\n{filtrelenmis_df}")
Pandas read_csv
ile Zaman Serisi Okuma:
read_csv
fonksiyonu, tarih/saat sütunlarını otomatik olarak tanıyabilir ve zaman serisi olarak okuyabilir. Bu özellik, bir CSV dosyasını okurken özellikle kullanışlıdır.
import pandas as pd
# Örnek CSV dosyası
# Tarih/saat sütunları içerir: 'tarih'
# Diğer sütunlar: 'değer'
df = pd.read_csv("veri.csv", parse_dates=["tarih"])
print(df)
Sonuç
Bu yazıda sunulan örnekler, tarih ve saat sütunlarını Python ile nasıl işleyeceğinize dair bir fikir vermektedir. Bu örnekleri inceleyerek, kendi veri setlerinizdeki tarih ve saat sütunlarını daha etkin bir şekilde işleyebileceksiniz.