0Pricing
Pandas & NumPy Academy · Ders

DatetimeIndex ve Dönem Aralıkları

pd.date_range ile DatetimeIndex oluşturun, dize biçimindeki tarihleri ayrıştırın ve zamana dayalı erişim için bir zaman sütununu indeks olarak ayarlayın.

DatetimeIndex ve Dönem Aralıkları, CoddyKit'te ücretsiz bir Pandas & NumPy Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Pandas & NumPy Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Pandas & NumPy Academy kursu toplamda 4 dersten oluşur.

Pandas'ın Özel Zaman Araçları Neden Var?

Zaman serisi verileri, tarihleri yalnızca dizeler olarak saklamaktan fazlasını gerektirir. Zamana göre sıralama yapmanız, tarih aralıklarını seçmeniz, farklı sıklıklara yeniden örneklemeniz ve ay ile haftanın günü gibi bileşenleri çıkarmanız gerekir. Pandas bunu, datetime64 değerlerinden oluşan bir dizin olan DatetimeIndex ile sağlar; bu dizin, sıradan tamsayı veya dize dizinlerinde bulunmayan, zamanın farkında olan özel işlemlerin önünü açar.

pd.date_range() ile DatetimeIndex Oluşturma

pd.date_range(start, end, freq), eşit aralıklı tarihlerden oluşan bir dizi üretir. freq parametresi aralığı ofset takma adları kullanarak belirtir: gün için 'D', saat için 'h', ay sonu için 'ME', hafta için 'W', yıl sonu için 'YE'. end veya periods (zaman damgalarının sayısı) parametrelerinden yalnızca birini aktarabilirsiniz; ikisini birden aktaramazsınız.

import pandas as pd

# Daily dates for January 2024
dates = pd.date_range(start='2024-01-01', end='2024-01-07', freq='D')
print(dates)
# DatetimeIndex(['2024-01-01', '2024-01-02', '2024-01-03',
#                '2024-01-04', '2024-01-05', '2024-01-06', '2024-01-07'],
#               dtype='datetime64[ns]', freq='D')

# 12 month-end dates
months = pd.date_range(start='2024-01-31', periods=12, freq='ME')
print(months[:3])

Bir DataFrame'e DatetimeIndex Atama

Zamana dayalı işlemleri etkinleştirmek için tarih sütununuzu, pd.to_datetime() ile datetime64 biçimine dönüştürdükten sonra set_index() kullanarak DataFrame'in dizini olarak ayarlayın. Dizin bir DatetimeIndex olduğunda kısmi dize dizinleme (df['2024-01']), tarih aralığı dilimleme ve zamanın farkında olan tüm yöntemleri kullanabilirsiniz.

df = pd.DataFrame({
    'date':  ['2024-01-01', '2024-01-02', '2024-01-03'],
    'value': [10, 15, 12]
})

df['date'] = pd.to_datetime(df['date'])
df = df.set_index('date')
print(df)
#             value
# date
# 2024-01-01     10
# 2024-01-02     15
# 2024-01-03     12
print(type(df.index))  # DatetimeIndex

Kısmi Dize Dizinleme

DatetimeIndex'in en kullanışlı özelliklerinden biri kısmi dize dizinleme özelliğidir. .loc[] işlevine kısmi bir tarih dizesi aktararak satırları yıla, aya veya tarihe göre seçebilirsiniz. Örneğin df.loc['2024-01'], Ocak 2024'teki tüm satırları; df.loc['2024'] ise 2024'teki tüm satırları döndürür. Sütun değerlerini açıkça karşılaştırmanıza gerek yoktur.

# Create a larger date-indexed Series
s = pd.Series(
    range(365),
    index=pd.date_range('2024-01-01', periods=365, freq='D')
)

# Select all of January 2024
print(s.loc['2024-01'].shape)  # (31,)

# Select a specific date range
print(s.loc['2024-03-01':'2024-03-07'])

Ayrıştırma İçin pd.to_datetime()

pd.to_datetime(), dizeleri, tam sayıları (Unix zaman damgaları) veya farklı biçimlerin bir arada bulunduğu tarih sütunlarını datetime64 türüne dönüştürür. Tarihler standart olmayan bir biçimdeyse tam kalıbı belirtmek için format parametresini kullanın (örneğin, '%d/%m/%Y'). Ayrıştırılamayan değerleri hata oluşturmak yerine NaT (Not a Time) değerine dönüştürmek için errors='coerce' kullanın.

# Parse standard ISO format
print(pd.to_datetime('2024-06-15'))

# Parse non-standard format
print(pd.to_datetime('15/06/2024', format='%d/%m/%Y'))

# Handle mixed/bad data gracefully
mixed = pd.to_datetime(['2024-01-01', 'bad_date', '2024-06-15'],
                       errors='coerce')
print(mixed)  # NaT for 'bad_date'

Tarih-Saat Bileşenleri için .dt Erişimcisi

Bir DataFrame sütunu (indeks değil) datetime64 değerleri içerdiğinde, .dt erişimcisi bu sütun vektöründeki tüm tarih-saat özelliklerine ve yöntemlerine vektörel olarak erişmenizi sağlar. Döngü kullanmadan .dt.year, .dt.month, .dt.day, .dt.day_of_week, .dt.hour gibi değerleri çıkarmak için bunu kullanın. Tarih-saat bilgisi indeksteyse doğrudan df.index.year kullanın.

df_col = pd.DataFrame({'date': pd.date_range('2024-01-01', periods=5, freq='D'),
                       'value': [10, 15, 12, 18, 14]})

df_col['year']  = df_col['date'].dt.year
df_col['month'] = df_col['date'].dt.month
df_col['dow']   = df_col['date'].dt.day_of_week  # 0=Monday
df_col['week']  = df_col['date'].dt.isocalendar().week
print(df_col.head())

pd.period_range() ile Dönem Aralıkları

Bir PeriodIndex, belirli zaman damgaları yerine zaman aralıklarını temsil eder. pd.period_range(start, periods, freq), aylık, üç aylık veya yıllık dönemler oluşturur. Period('2024-01', 'M') gibi bir dönem yalnızca başlangıç tarihini değil, Ocak 2024'ün tamamını temsil eder. PeriodIndex, çeyrekler veya aylar üzerinden düşündüğünüz mali raporlama işlemlerinde kullanışlıdır.

# Monthly periods
periods = pd.period_range('2024-01', periods=6, freq='M')
print(periods)
# PeriodIndex(['2024-01', '2024-02', '2024-03',
#              '2024-04', '2024-05', '2024-06'],
#             dtype='period[M]')

# Quarterly periods
quarters = pd.period_range('2024Q1', periods=4, freq='Q')
print(quarters)  # [2024Q1, 2024Q2, 2024Q3, 2024Q4]

Zaman Damgası ile Dönüştürme

Bir DatetimeIndex'i to_period(freq) ile PeriodIndex'e, tekrar to_timestamp() ile geri dönüştürebilirsiniz. Belirli bir güne göre değil, satırları aya veya çeyreğe göre etiketlemek istediğinizde dönemlere dönüştürme kullanışlıdır; bu, takvim tabanlı analizlerde gruplama ve toplulaştırmayı daha anlaşılır hâle getirir.

daily_idx = pd.date_range('2024-01-15', periods=5, freq='D')
print('DatetimeIndex:', daily_idx[:3])

# Convert to monthly periods
monthly_idx = daily_idx.to_period('M')
print('PeriodIndex:', monthly_idx[:3])
# PeriodIndex(['2024-01', '2024-01', ...], dtype='period[M]')

# Convert back to timestamps (start of period)
print(monthly_idx.to_timestamp()[:3])

Saat Dilimlerini Yönetme

Gerçek dünyadaki zaman serileri çoğu zaman saat dilimi bilgisiyle birlikte gelir. Pandas, saat dilimi farkındalığı olan DatetimeIndex'i tz_localize() (saat dilimini naif zaman damgalarına ekler) ve tz_convert() (saat dilimleri arasında dönüştürür) aracılığıyla destekler. Yaz saati uygulamasından kaynaklanan belirsizlik hatalarını önlemek için her zaman dahili olarak UTC ile çalışın ve yerel saate yalnızca görüntüleme sırasında dönüştürün.

naive = pd.date_range('2024-01-01', periods=3, freq='D')
print('Naive:', naive.tz)

# Attach timezone (localize)
utc = naive.tz_localize('UTC')
print('UTC:', utc)

# Convert to New York time
ny = utc.tz_convert('America/New_York')
print('NY:', ny[:2])

DatetimeIndex'i Denetleme ve Sıralama

resample() ve dilimleme gibi zaman serisi işlemleri, DatetimeIndex'in sıralanmış (monotonik olarak artan) olmasını gerektirir. df.index.is_monotonic_increasing ile denetleyin ve gerekirse df.sort_index() ile sıralayın. Sıralanmamış bir DatetimeIndex, yeniden örnekleme ve pencere işlevlerinde fark edilmesi zor hatalara veya beklenmeyen sonuçlara yol açabilir.

import numpy as np

df_unsorted = pd.DataFrame(
    {'value': [10, 15, 12]},
    index=pd.to_datetime(['2024-01-03', '2024-01-01', '2024-01-02'])
)
print('Sorted:', df_unsorted.index.is_monotonic_increasing)  # False

df_sorted = df_unsorted.sort_index()
print('After sort:', df_sorted.index.is_monotonic_increasing)  # True
print(df_sorted)

Uygulamalı Örüntü: Zaman Serisi DataFrame'i Oluşturma

Ham verilerden zaman indeksli bir DataFrame oluşturmak için eksiksiz bir örüntü şöyledir: tarihleri ayrıştırın, indeksi ayarlayın, sıralayın ve indeks sıklığını doğrulayın. Bu kurulum, sonraki derslerdeki tüm zaman serisi analizlerinin temelidir; yeniden örnekleme, hareketli ortalamalar ve gecikme özelliklerinin tümü temiz ve sıralanmış bir DatetimeIndex'e dayanır.

import numpy as np

# Simulate loading raw data
np.random.seed(42)
dates = pd.date_range('2024-01-01', periods=30, freq='D')
df_ts = pd.DataFrame({'sales': np.random.randint(100, 500, 30)}, index=dates)

df_ts.index.name = 'date'
print('Shape:', df_ts.shape)
print('Freq:', df_ts.index.freq)
print('Sorted:', df_ts.index.is_monotonic_increasing)
print(df_ts.head())

Hızlı Kontrol

Bu derste öğrendiklerinizi, DatetimeIndex ve dönem aralıkları konusundaki anlayışınızı sınayarak kontrol edin.

Ders Özeti

Bu derste şunları öğrendiniz: pd.date_range() ile bir DatetimeIndex oluşturmayı ve pd.to_datetime() ile tarihleri ayrıştırmayı, sezgisel tarih seçimi için kısmi dize indekslemeyi, Timestamp ve Period türleri arasındaki farkı ve saat dilimlerini yönetmeyi. Sırada, bir zaman serisinin sıklığını değiştirmek için yeniden örneklemeyi inceleyeceğiz.

Sıkça Sorulan Sorular

“DatetimeIndex ve Dönem Aralıkları” dersi ücretsiz mi?

Evet — “DatetimeIndex ve Dönem Aralıkları” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Pandas & NumPy Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Pandas & NumPy Academy kursu toplamda 4 dersten oluşur.

“DatetimeIndex ve Dönem Aralıkları” dersinde ne öğreneceğim?

pd.date_range ile DatetimeIndex oluşturun, dize biçimindeki tarihleri ayrıştırın ve zamana dayalı erişim için bir zaman sütununu indeks olarak ayarlayın. Pandas & NumPy Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Pandas & NumPy Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Pandas & NumPy Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“DatetimeIndex ve Dönem Aralıkları” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Pandas & NumPy Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Pandas & NumPy Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. DatetimeIndex ve Dönem Aralıkları
  2. Zaman Serilerini Yeniden Örnekleme
  3. Kaydırma ve Gecikme Özellikleri
  4. Zamansal Özellikleri Çıkarma
← Pandas & NumPy Academy Sayfasına Dön