Çözüldü: yukarı örneklemeden sonra pandalar geriye doğru dolduruyor

Son Güncelleme: 09/11/2023

Günümüz dünyasında, çeşitli fenomenleri anlamak ve bilinçli kararlar almak için veri manipülasyonu ve analizi çok önemlidir. Veri analizindeki yaygın görevlerden biri, üst örnekleme (frekansı artırma) veya alt örnekleme (frekansı azaltma) yoluyla verilerin sıklığını değiştirmeyi içeren zaman serisi verilerini yeniden örneklemedir. Bu makalede, güçlü Python kitaplığı Pandas'ı kullanarak zaman serisi verilerini yukarı örnekleme yaparken geriye doğru doldurma sürecini tartışacağız.

Zaman Serisi Verilerini Geriye Doğru Doldur

Zaman serisi verilerini üst örnekleme yaptığımızda, veri noktalarının sıklığını artırırız, bu da genellikle yeni oluşturulan veri noktaları için eksik değerlerle sonuçlanır. Bu eksik değerleri doldurmak için çeşitli yöntemler kullanabiliriz. Böyle bir yöntem denir geriye doğru doldurma, Ayrıca şöyle bilinir geri doldurma. Geriye doğru doldurma, eksik değerleri zaman serisindeki bir sonraki uygun değerle doldurma işlemidir.

pandalar kitaplığı

Python'un pandalar kitaplığı DataFrame'ler ve zaman serisi verileri gibi veri yapılarını işlemek için çok çeşitli işlevler sunan, veri işleme için temel bir araçtır. Pandas, yeniden örnekleme ve eksik değerleri doldurma gibi zaman serisi verileriyle çalışmayı kolaylaştıran ve üst örneklemeden sonra geriye doğru doldurmayı verimli bir şekilde gerçekleştirmemizi sağlayan yerleşik özelliklere sahiptir.

Çözüm: Pandalarla Geriye Doğru Doldurma

Pandalar kullanılarak zaman serisi verilerinin üst örneklemesinden sonra geriye doğru dolgu uygulama sürecini göstermek için basit bir örnek ele alalım. Gerekli kitaplıkları içe aktararak ve örnek bir zaman serisi veri kümesi oluşturarak başlayacağız.

import pandas as pd
import numpy as np

# Create a sample time series dataset
date_rng = pd.date_range(start='2022-01-01', end='2022-01-10', freq='D')
data = np.random.randint(0, 100, size=(len(date_rng), 1))

df = pd.DataFrame(date_rng, columns=['date'])
df['value'] = data

Artık örnek verilerimizi aldığımıza göre, yukarı örneklemeye ve geriye doğru doldurma yöntemini uygulamaya devam edeceğiz. Bu örnekte, günlük sıklıktan saatlik sıklığa üst örnekleme yapacağız:

# Upsample the data to hourly frequency
df.set_index('date', inplace=True)
hourly_df = df.resample('H').asfreq()

# Apply the backward fill method to fill missing values
hourly_df.fillna(method='bfill', inplace=True)

Yukarıdaki kodda, önce 'tarih' sütununu dizin olarak belirledik ve ardından verileri saatlik bir sıklığa göre yeniden örnekledik. yeniden örnekle() işlev. Ortaya çıkan DataFrame, artan frekans nedeniyle eksik değerlere sahip. daha sonra kullandık dolgu() eksik değerleri geriye doğru doldurmak için 'bfill' parametresiyle bir yöntem.

Adım Adım Açıklama

Daha iyi anlamak için kodu parçalayalım:

1. Önce Pandas ve NumPy kitaplıklarını içe aktardık:

   import pandas as pd
   import numpy as np
   

2. Kullanarak örnek bir zaman serisi veri kümesi oluşturduk. tarih aralığı() günlük tarihler ve rasgele sayısal değerler oluşturmak için Pandas işlevi:

   date_rng = pd.date_range(start='2022-01-01', end='2022-01-10', freq='D')
   data = np.random.randint(0, 100, size=(len(date_rng), 1))
   df = pd.DataFrame(date_rng, columns=['date'])
   df['value'] = data
   

3. Ardından, 'tarih' sütununu dizin olarak belirledik ve verileri saatlik bir sıklığa göre yeniden örnekledik. yeniden örnekle() hem de asfreq() fonksiyonlar:

   df.set_index('date', inplace=True)
   hourly_df = df.resample('H').asfreq()
   

4. Son olarak, üst örneklenmiş DataFrame'deki eksik değerleri şunu kullanarak doldurduk: dolgu() Geriye doğru doldurma için 'bfill' parametreli yöntem:

   hourly_df.fillna(method='bfill', inplace=True)
   

Sonuç

Bu yazıda, süreci inceledik zaman serisi verilerinin üst örneklemesinden sonra geriye doğru doldurma Python'daki güçlü Pandas kitaplığını kullanarak. Bu teknikleri anlayarak ve uygulayarak, zaman serisi verilerini verimli bir şekilde manipüle edip analiz edebilir, değerli içgörüler keşfedebilir ve bilinçli kararlar verebiliriz.

İlgili Mesajlar: