Data Science

Pandas Tarih-Zaman Dönüşümü: Veri Hazırlamada Etkin Teknikler

Spread the love

Pandas, veri manipülasyonu ve analizi için güçlü bir Python kütüphanesidir. Tarih ve saatlerle çalışma yaygın bir görevdir ve verileriniz genellikle tarih ve saat bilgilerini metin veya başka tarih-saat dışı formatlarda içerebilir. Bu makale, Pandas DataFrame sütunlarını tarih-saat veri türüne dönüştürmek için çeşitli verimli teknikleri göstererek zaman serisi analizini ve manipülasyonunu önemli ölçüde kolaylaştırmaktadır.

İçerik Tablosu:

  1. pd.to_datetime() ile Verimli Tarih-Saat Dönüşümü
  2. apply() ile Karmaşık Formatların İşlenmesi
  3. Birden Çok Sütunun Aynı Anda Dönüştürülmesi
  4. Basit Dönüşümler İçin astype() Kullanımı

1. pd.to_datetime() ile Verimli Tarih-Saat Dönüşümü

En basit ve önerilen yaklaşım, pd.to_datetime() fonksiyonunu kullanmaktır. Bu fonksiyon oldukça çok yönlüdür ve çok çeşitli tarih ve saat formatlarını işlemede uzmandır.


import pandas as pd

data = {'date_str': ['2024-03-08', '2024-03-09', '2024-03-10']}
df = pd.DataFrame(data)

# 'date_str' sütununu tarih-saate dönüştür
df['date'] = pd.to_datetime(df['date_str'])

print(df)
print(df.dtypes)

Bu kod parçacığı, tarih metinlerinden oluşan bir sütun içeren bir DataFrame oluşturur. pd.to_datetime() otomatik olarak formatı tanımlar ve metinleri tarih-saat nesnelerine dönüştürür. dtypes çıktısı başarılı dönüşümü doğrular. pd.to_datetime() ayrıca zaman bileşenlerine sahip formatları işler ve errors parametresi aracılığıyla hata işleme sunar (örneğin, geçersiz tarihleri NaT ile değiştirmek için ‘coerce’).

2. apply() ile Karmaşık Formatların İşlenmesi

apply() yöntemi, özellikle karmaşık tarih formatlarıyla veya özel ayrıştırma mantığıyla uğraşırken gelişmiş esneklik sağlar.


import pandas as pd

data = {'date_str': ['Mar 8, 2024', 'Mar 9, 2024', 'Mar 10, 2024']}
df = pd.DataFrame(data)

# Tarih metnini ayrıştırmak için özel fonksiyon
def parse_date(date_str):
    return pd.to_datetime(date_str, format='%b %d, %Y')

df['date'] = df['date_str'].apply(parse_date)

print(df)
print(df.dtypes)

Burada, belirli bir tarih formatını işlemek için özel bir parse_date fonksiyonu tanımlanır. apply() yöntemi, bu fonksiyonu ‘date_str’ sütunundaki her bir öğeye uygular. Bu yaklaşım, tutarsız tarih formatlarıyla uğraşırken veya özel işlem gerektirdiğinde faydalıdır.

3. Birden Çok Sütunun Aynı Anda Dönüştürülmesi

apply() yöntemi, birden çok sütunu aynı anda dönüştürmek için genişletilebilir.


import pandas as pd

data = {'date_str': ['Mar 8, 2024', 'Mar 9, 2024', 'Mar 10, 2024'],
        'time_str': ['10:00:00', '12:30:00', '14:45:00']}
df = pd.DataFrame(data)

def parse_date_time(row):
    return pd.to_datetime(row['date_str'] + ' ' + row['time_str'], format='%b %d, %Y %H:%M:%S')

df['datetime'] = df.apply(parse_date_time, axis=1)

print(df)
print(df.dtypes)

Bu örnek, ayrı sütunlardan tarih ve saat metinlerini birleştirir. apply() içindeki axis=1 argümanı, satır bazlı fonksiyon uygulamasını gösterir.

4. Basit Dönüşümler İçin astype() Kullanımı

astype() yöntemi özlü bir dönüşüm yöntemi sunar, ancak pd.to_datetime() kadar esnek değildir. Verileriniz zaten Pandas’ın doğrudan yorumlayabileceği bir formattaysa en etkilidir.


import pandas as pd

data = {'date_str': ['2024-03-08', '2024-03-09', '2024-03-10']}
df = pd.DataFrame(data)

df['date'] = pd.to_datetime(df['date_str']) #Önce esneklik için pd.to_datetime kullanarak tarih-saat nesnesine dönüştürün
df['date'] = df['date'].astype('datetime64[ns]') #Şimdi astype kullanabiliriz

print(df)
print(df.dtypes)

astype doğrudan bir dönüşüm sağlarken, pd.to_datetime üstün hata işleme ve format esnekliği nedeniyle genellikle tercih edilir. astype uygulamadan önce pd.to_datetime kullanarak ön dönüşümün gerekli olduğunu unutmayın; aksi takdirde hata oluşur.

En uygun yöntem, verilerinizin karmaşıklığına ve özel ihtiyaçlarınıza bağlıdır. Çoğu senaryo için pd.to_datetime(), verimlilik ve esnekliğin en iyi dengesini sağlar. Bununla birlikte, apply() yöntemi gerektiğinde özel fonksiyon yetenekleri sunar ve astype, verilerin zaten uygun bir formatta olduğu basit durumlar için özlü bir çözümdür.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir