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:
pd.to_datetime()
ile Verimli Tarih-Saat Dönüşümüapply()
ile Karmaşık Formatların İşlenmesi- Birden Çok Sütunun Aynı Anda Dönüştürülmesi
- 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.