Örnek sorular
Fe Temporal Cyclical FeaturesZorluk 1
pandas 2.3'te bir s Series'i 0..4 tamsayı indeksinde [10, 20, 30, 40, 50] değerlerini tutuyor. s.shift(1) ile bir lag feature'ı üretiliyor. Sonuç ne içerir?
- a[20, 30, 40, 50, NaN]; çünkü her değer bir konum öne çekilir.
- b[10, 20, 30, 40, 50]; çünkü gecikme yalnız indeksi yeniden etiketler, değerler yerinde kalır.
- c[NaN, 10, 20, 30, 40]; çünkü
shift her değeri bir konum sonraya kaydırır.✓ - d[NaN, NaN, 10, 20, 30]; çünkü bir adımlık lag her zaman iki satırı boşaltır.
Açıklama:Pozitif shift argümanı değerleri indeks boyunca aşağı iter, yani i konumu daha önce i-1'de duran değeri alır. İlk konumun öncülü olmadığı için NaN olur ve son özgün değer (50) diziden düşer. shift(1) tam olarak bir NaN üretir.
Fe Temporal Cyclical FeaturesZorluk 2
Bir junior mühendis, tarihe göre sıralı ve günde bir satır içeren bir tabloda df['next_day_price'] = df['price'].shift(-1) yazıyor. Mekanik olarak t satırı hangi değeri alır?
- at+1 gününde kaydedilen fiyatı, yani t satırından bir takvim adımı ilerideki değeri.✓
- bt-1 gününün fiyatını; eksi işareti önce sıralamayı ters çevirdiği için.
- cYine t gününün fiyatını; pandas negatif argümanları sıfıra kırpar.
- dt gününden sonraki tüm fiyatların ortalamasını; negatif shift ileriye doğru toplulaştırır.
Açıklama:Negatif shift argümanı değerleri indeks boyunca yukarı çeker: t konumu t+1 konumundaki değeri alır. Tarihe göre sıralı günlük bir tabloda bu, yarının fiyatının bugünün satırına yerleşmesi demektir; ardılı olmayan son satır NaN olur. Ne bir toplulaştırma ne de yeniden sıralama gerçekleşir.
Fe Temporal Cyclical FeaturesZorluk 2
Günlük bir tabloda boşluksuz, günde bir satır olmak üzere 100 satır var. Ekip shift(1) .. shift(7) ile lag_1'den lag_7'ye yedi lag sütunu ekliyor ve ardından dropna() çağırıyor. Kaç satır hayatta kalır ve neden?
- a100 satır; çünkü
dropna() yalnız tüm sütunları eksik olan satırları atar. - b99 satır; çünkü yalnız en baştaki satırın öncülü olmayabilir.
- c86 satır; çünkü yedi lag'in her biri baştan bağımsız olarak iki satıra mal olur.
- d93 satır; çünkü
lag_7 ilk yedi konumda tanımsızdır ve baştaki kaybı o sütun belirler.✓
Açıklama:shift(k) başta tam olarak k adet NaN bırakır; yani lag_1'de 1, lag_2'de 2, lag_7'de 7 tane. En az bir sütunu eksik olan satır atıldığı için baştaki kayıp sütunların toplamı değil maksimumudur: 0..6 satırları gider, geriye 93 satır kalır. pandas 2.3'te ölçüldüğünde hayatta kalan ilk indeks 7'dir.
Fe Temporal Cyclical FeaturesZorluk 1
pandas 2.3 ile pd.Series([2, 4, 6, 8, 10]).rolling(3).mean() değerlendiriliyor. Ekrana ne basılır?
- a[2.0, 3.0, 4.0, 6.0, 8.0]
- b[NaN, NaN, 4.0, 6.0, 8.0]✓
- c[NaN, NaN, NaN, 4.0, 6.0]
- d[NaN, 3.0, 4.0, 6.0, 8.0, NaN]
Açıklama:Tamsayı pencerede min_periods varsayılan olarak pencere boyutuna eşittir; bu yüzden ilk iki konumda üçten az gözlem bulunur ve NaN kalır. 2. konumdan itibaren her çıktı o konumun ve kendisinden önceki iki konumun ortalamasıdır: (2+4+6)/3 = 4, (4+6+8)/3 = 6, (6+8+10)/3 = 8. Çıktı uzunluğu her zaman girdi uzunluğuna eşittir.
Fe Temporal Cyclical FeaturesZorluk 3
Bir pencerenin gerçekte neyi içerdiğini görmek için bir mühendis pandas 2.3'te şunu çalıştırıyor: pd.Series([1., 2., 3., 4., 5.]).rolling(3).apply(lambda w: w[-1], raw=True). Sonuç [NaN, NaN, 3.0, 4.0, 5.0] çıkıyor. Bu çıktı rolling(3) hakkında neyi kanıtlar?
- aPencere bir önceki satıra sabitlenmiştir, yani etiket satırı pencerenin parçası hiç değildir.
- b
apply pencereyi ters sırada alır, dolayısıyla w[-1] aslında pencerenin en eski gözlemidir. - cEtiketi taşıyan satır kendi penceresinin son elemanıdır.✓
- dPencere etiket satırının etrafında ortalanmıştır, bu yüzden
w[-1] ondan bir satır ileridedir.
Açıklama:w[-1] her pencerenin son elemanını döndürür ve etiketli her konumda özgün değeri aynen üretir. Bu ancak etiketli satır kendi penceresinin sağ ucunda oturuyorsa mümkündür; yani rolling(3) i konumunda i-2, i-1 ve i konumlarını kapsar. Aynı çağrı w[0] ile koşturulduğunda [NaN, NaN, 1.0, 2.0, 3.0] yani iki satır geriden gelen değer döner ve aynı aralığı doğrular.
Fe Temporal Cyclical FeaturesZorluk 3
pandas 2.3'te s = [4, 8, 12, 16, 20] Series'i üzerinde iki aday feature satır satır karşılaştırılıyor: A = s.rolling(3).mean() → [NaN, NaN, 8, 12, 16] ve B = s.shift(1).rolling(3).mean() → [NaN, NaN, NaN, 8, 12]. İkisi arasındaki mekanik ilişkiyi hangi ifade tanımlar?
- aB, A'nın bir satır aşağı kaymış hâlidir; B i konumunda i-3..i-1 konumlarını ortalar, A ise i konumunu da içerir.✓
- bB dört gözlemlik bir pencere kullanır ve ilk tanımlı değeri A'nınkinden bir satır geç belirir.
- cB, A ile aynı üç konumu ortalar ama kaydırılmış gözlem sayısına böldüğü için satır satır farklı değerler verir.
- dB ortalanmış, A ise sondan yürüyen bir penceredir; 5 satırlık bu Series'in iki ucunda da ayrışırlar.
Açıklama:shift(1), pencere uygulanmadan önce her gözlemi bir konum sonraya taşır; böylece i konumuna düşen pencere i-3, i-2 ve i-1 konumlarını görür. A'nın aynı konumdaki penceresi ise i-2, i-1 ve i'yi kapsar. Bu Series üzerinde ölçüldüğünde B'nin değer akışı A'nınkinin tam bir satır gecikmiş hâlidir ve bölen ikisinde de üçtür.